A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 程序爱好者 中级黑马   /  2014-5-4 20:43  /  637 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.text.DateFormat.Field;
  2. public class Test {
  3.         public static void main(String[] args) throws Exception
  4.         {
  5.                 ReflectPoint pt=new ReflectPoint(3,5);
  6.                 Field fieldy=pt.getClass().getField("y"); //pt.getClass().getField("y");  这句编译错了 ,怎么错的
  7.                 //java.lang.reflect.Field fieldy=pt.getClass().getField("y"); 这样编译就对了,可是为什么要这样。
  8.                 System.out.println(fieldy.get(pt));//fieldy.get(pt)  这编译也错了  我刚看反射,求指教
  9.                 Field fieldx=pt.getClass().getField("x");
  10.                 System.out.println(fieldx.get(pt));       
  11.         }
  12. }


  13. public class ReflectPoint {
  14.         private int x;
  15.         public int y;
  16.         public ReflectPoint(int x, int y) {
  17.                 super();
  18.                 this.x = x;
  19.                 this.y = y;
  20.         }       
  21. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
轻语。 + 1

查看全部评分

3 个回复

倒序浏览
刚开始的导入的是java.text中的Field类,故编译器报错,是包导错的问题。
第二个错误应该是由第一个错误引起的。记得一定要导对包!!
回复 使用道具 举报
本帖最后由 ò壞尛孩 于 2014-5-4 21:04 编辑

import java.text.DateFormat.Field;    包导入错误!如果成员私有private 得用暴力反射

回复 使用道具 举报
ò壞尛孩 发表于 2014-5-4 21:01
import java.text.DateFormat.Field;    包导入错误!如果成员私有private 得用暴力反射

...
  1.                 ReflectPoint pt=new ReflectPoint(3,5);
  2.                 Field fieldy=pt.getClass().getField("y");
  3.                 System.out.println(fieldy.get(pt));
  4.                 Field fieldx=pt.getClass().getField("x");
  5.                 fieldx.setAccessible(true);   //用了这句怎么还是错呢?
  6.                 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)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马