黑马程序员技术交流社区
标题:
关于反射的问题
[打印本页]
作者:
凡延海
时间:
2012-5-20 19:46
标题:
关于反射的问题
public class BTest {
public static void main(String []args)
{
ReflectPoint pt1=new ReflectPoint(3,5);
Field fy=pt1.getClass().getField("y");
System.out.println(fy.get(pt1));
}
}
class ReflectPoint
{
private int x;
public int y;
public ReflectPoint(int x,int y)
{
super();
this.x=x;
this.y=y;
}
}
我按照视频调试代码,不过在编译的时候就是出错这一行Field fy=pt1.getClass().getField("y");出错,显示找不到符号,郁闷!!
作者:
胥江
时间:
2012-5-20 20:17
我复制你的代码运行完全没问题啊。
import java.lang.reflect.Field;
public class test {
public static void main(String []args) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException
{
ReflectPoint pt1=new ReflectPoint(3,5);
Field fy=pt1.getClass().getField("y");
System.out.println(fy.get(pt1));
}
}
class ReflectPoint
{
private int x;
public int y;
public ReflectPoint(int x,int y)
{
super();
this.x=x;
this.y=y;
}
}
复制代码
只加了抛出异常的代码
运行结果
未命名.jpg
(18.77 KB, 下载次数: 25)
下载附件
2012-5-20 20:16 上传
作者:
凡延海
时间:
2012-5-20 20:31
那就奇怪了,我的工具有问么,我在学习反射的时候,不论是Constructor还是Field 每次编译的时候都会报错,说找不到符号,我用的是JCreator编译的。
作者:
彩虹
时间:
2012-5-20 20:34
亲,不知道你在编译环境中的代码有没有加上头文件
import java.lang.reflect.Field;
如果没有,那你所犯的错误也太低级了,呵呵,小心一点。
解决办法:1.加上头文件import java.lang.reflect.Field;
2.main主函数的后面加上处理异常的代码
作者:
凡延海
时间:
2012-5-20 20:45
是的,呵呵犯了一个低级的错误,我没有import引入类,加上import java.lang.reflect.Field;就好了。我一直记得java自己会引入java.lang中的类,就疏忽了。自动引用应该是java.lang.*吧。
作者:
余宏
时间:
2012-5-20 20:58
1
没有导入包:import java.lang.reflect.Field;
2
没有try,catch
试下下面的代码
import java.lang.reflect.Field;
public class BTest {
public static void main(String []args)
{
Field fy;
try {
ReflectPoint pt1=new ReflectPoint(3,5);
fy = pt1.getClass().getField("y");
try {
System.out.println(fy.get(pt1));
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchFieldException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
class ReflectPoint
{
private int x;
public int y;
public ReflectPoint(int x,int y)
{
super();
this.x=x;
this.y=y;
}
}
作者:
凡延海
时间:
2012-5-20 21:01
嗯,又重新调试了一下,通过了,谢谢大家。
作者:
niceBoy
时间:
2012-5-20 22:06
亲,没导入包吧
作者:
黑马-唐磊
时间:
2012-5-20 22:26
哈哈,竟忘了导包,以后还是用myEclipse编译工具它会自动提醒你,另外如果是初学的话还是建议用那种简单的
作者:
凡延海
时间:
2012-5-20 22:34
嗯,以后要细心。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2