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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

©   /  2011-8-31 23:04  /  1993 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

黑马网友  发表于 2011-8-31 23:44:06
楼主
呵呵,你这样写就是可以打印出3啊,你是在同一个类中访问private类型的变量x当然是可以的,private访问权限就是在同一个类中才可见。写在两个类中就不可见了。代码如下:
package heima.reflect.test;

import java.lang.reflect.Field;

class ReflectPoint {
        private int x;
        int y;

        public ReflectPoint(int x, int y) {
                this.x = x;
                this.y = y;
        }
}

public class ReflectPointTest {
        public static void main(String[] args) throws Exception {
                ReflectPoint pt1 = new ReflectPoint(3, 5);
                Field fieldX = pt1.getClass().getDeclaredField("x");
                // Field fieldX=pt1.getClass().getField("x");
                                           [color=Red]// fieldX.setAccessible(true);[/color]       
                                     System.out.println(fieldX.get(pt1));
        }
}

             执行时报错:
Exception in thread "main" java.lang.IllegalAccessException: Class heima.reflect.test.ReflectPointTest can not access a member of class heima.reflect.test.ReflectPoint with modifiers "private"
        at sun.reflect.Reflection.ensureMemberAccess(Unknown Source)
        at java.lang.reflect.Field.doSecurityCheck(Unknown Source)
        at java.lang.reflect.Field.getFieldAccessor(Unknown Source)
        at java.lang.reflect.Field.get(Unknown Source)
        at heima.reflect.test.ReflectPointTest.main(ReflectPointTest.java:21)

   加上红色那句就能打印出3了。并不是什么1.7的新特性,估计你用的也不是1.7的jdk.

评分

参与人数 1技术分 +2 收起 理由
wangfayin + 2 回答的不错哦!

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-9-1 00:10:44
沙发
呵呵,就是我也一样有时候就楞了。。。
回复 使用道具 举报
张老师在“面向对象下”中的访问控制已经讲过了,你可以看看

                  private  defalut    protected  public
同一类            可以        可以         可以       可以
同一包中的类                 可以         可以       可以
子类                                                可以      可以
其它包中的类                                  可以      可以
[ 本帖最后由 郝妮娜 于 2011-09-01  12:31 编辑 ]
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马