刚学Java不久,知道私有属性不能直接访问。但是请看如下代码,它是如何做到的?分析越详细越好,看不懂的描述不清楚不给分。import java.lang.reflect.Field;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;public class Employee {
private String name; //注意属性的标志符是私有的,下同
private String age;
private String salary;
public static void main(String[] args) { // get thisClass fields
Field thisFields[] = Employee.class.getDeclaredFields();
// get superClass fields
List thisFieldsList = Arrays.asList(thisFields);
for (Iterator iterator = thisFieldsList.iterator(); iterator.hasNext();) {
Field field = (Field) iterator.next();
System.out.println(field.getName());
}
}
}输出如下:
name
age
salary

解决方案 »

  1.   

    1、public:public表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用 2、private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,私有财产神圣不可侵犯嘛,即便是子女,朋友,都不可以使用。 3、protected:protected对于子女、朋友来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部class,protected就变成private。 作用域       当前类    同一package   子孙类     其他package public        √       √             √           √ protected     √       √             √           × friendly      √       √             ×           × private       √       ×             ×           × 不写时默认为friendly前面的是我学java时候的启蒙语句....private在当前类是可见的   所以你的问题也就有了答案
      

  2.   

    http://dev.csdn.net/article/49/49876.shtm
      

  3.   

    Field类是用来描述Class里的成员对象的,如果是一个private的Field,只要调用Field.setVisible(true),就可以让其在类外可见(只是你用设置了visible的这个FIELD对象可以取到)
      

  4.   

    来拿分了。首先这个肯定是使用了反射
        Field thisFields[] = Employee.class.getDeclaredFields();
       得到Employee类的变量(它有三个)
        知道这个了后面自然理解了吧