问题遇到的现象和发生背景
在二个不同的包调用私有函数
问题相关代码,请勿粘贴截图
public class Text{
public static void main( String[] args)
{
//circ a1 = new circ(3);
//a1.area();
//a1.perimeter();
rect a2 = new rect();
a2.set_a(3);
a2.set_b(4);
//System.out.println("边长是"+a2.get_a()+" "+a2.get_b() );
Class classType = a2.getClass();
Method method = classType.getDeclareMethod("area",null);
method.setAccessaible(true);
method.invoke(a2,null);
a2.perimeter();
//tria a3 =new tria(3,4,5);
//a3.area();
//a3.perimeter();
}
}
//下面是调用私有方法的另一个包里面的代码
package rect;
public class rect
{
private double a;
private double b;
public void set_a(double a)
{
if(a>0)
{
this.a=a;
}
else
System.out.println("长方形的长度输入不合法,长度是"+a);
return;
}
public void set_b(double b)
{
if(b>0)
{
this.b=b;
}
else
System.out.println("长方形的长度输入不合法,长度是"+b);
return;
}
public double get_a()
{
return this.a;
}
public double get_b()
{
return this.b;
}
/面积函数1:成功
public void area()
{
double s = this.athis.b;
System.out.println("长方形的面积是"+s);
}
*/
private void area()
{
double s = this.a*this.b;
System.out.println("长方形的面积是"+s);
}
public void perimeter()
{
double s = (this.a+this.b)*2;
System.out.println("长方形的周长是"+s);
}
}
运行结果及报错内容
java:24: 错误: 找不到符号
Method method = classType.getDeclareMethod("area",null);
^
符号: 方法 getDeclareMethod(String,<空值>)
位置: 类型为Class的变量 \Text.java:26: 错误: 找不到符号
method.setAccessaible(true);
^
符号: 方法 setAccessaible(boolean)
位置: 类型为Method的变量 method
\Text.java:28: 警告: 最后一个参数使用了不准确的变量类型的 varargs 方法的非 varargs 调用;
method.invoke(a2,null);
^
对于 varargs 调用, 应使用 Object
对于非 varargs 调用, 应使用 Object[], 这样也可以抑制此警告
2 个错误
1 个警告