黑马程序员技术交流社区
标题:
Field问题
[打印本页]
作者:
程序爱好者
时间:
2014-5-4 20:43
标题:
Field问题
import java.text.DateFormat.Field;
public class Test {
public static void main(String[] args) throws Exception
{
ReflectPoint pt=new ReflectPoint(3,5);
Field fieldy=pt.getClass().getField("y"); //pt.getClass().getField("y"); 这句编译错了 ,怎么错的
//java.lang.reflect.Field fieldy=pt.getClass().getField("y"); 这样编译就对了,可是为什么要这样。
System.out.println(fieldy.get(pt));//fieldy.get(pt) 这编译也错了 我刚看反射,求指教
Field fieldx=pt.getClass().getField("x");
System.out.println(fieldx.get(pt));
}
}
public class ReflectPoint {
private int x;
public int y;
public ReflectPoint(int x, int y) {
super();
this.x = x;
this.y = y;
}
}
复制代码
作者:
Lin0411
时间:
2014-5-4 20:59
刚开始的导入的是java.text中的Field类,故编译器报错,是包导错的问题。
第二个错误应该是由第一个错误引起的。记得一定要导对包!!
作者:
ò壞尛孩
时间:
2014-5-4 21:01
本帖最后由 ò壞尛孩 于 2014-5-4 21:04 编辑
import java.text.DateFormat.Field; 包导入错误!如果成员私有private 得用暴力反射
作者:
程序爱好者
时间:
2014-5-4 21:56
ò壞尛孩 发表于 2014-5-4 21:01
import java.text.DateFormat.Field; 包导入错误!如果成员私有private 得用暴力反射
...
ReflectPoint pt=new ReflectPoint(3,5);
Field fieldy=pt.getClass().getField("y");
System.out.println(fieldy.get(pt));
Field fieldx=pt.getClass().getField("x");
fieldx.setAccessible(true); //用了这句怎么还是错呢?
System.out.println(fieldx.get(pt));
复制代码
输出结果为:
5
Exception in thread "main" java.lang.NoSuchFieldException: x
at java.lang.Class.getField(Class.java:1520)
at fanshe1.Test.main(Test.java:11)
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2