高金亮丶
Published on 2019-11-12 11:31 with jnnleo丶

Java反射的 getDeclaredField()和getField()区别

`

import java.lang.reflect.Field;
class Father{
public String fname;
}
public class Test extends Father{
private String name ;
public Integer age ;

protected String sex;

public static void main(String[] args) throws Exception {

    Field privateName = Test.class.getDeclaredField("name");
    //Field publicName = Test.class.getField("name");//报错 NoSuchFieldException: name
    System.out.println("privateName="+privateName);
    //System.out.println("publicName="+publicName);

    Field privateAge = Test.class.getDeclaredField("age");
    Field publicAge = Test.class.getField("age");

    System.out.println("privateAge="+privateAge);
    System.out.println("publicAge="+ publicAge.getName());
    Field privateSex = Test.class.getDeclaredField("sex");
   // Field publicSex = Test.class.getField("sex");//报错
    System.out.println("privateSex="+privateSex);
    //System.out.println("publicSex="+publicSex);

   // Field privateFname = Test.class.getDeclaredField("fname"); //报错
    Field publicFname = Test.class.getField("fname");

    /**
     * 结论:
     * getDeclaredField() 可以获取类本身的所有的属性成员
     * getField() 只能获取本类及其父类的public成员
     */
}

}

`

posted @ 2020-12-06 15:49  L-xxxx  阅读(313)  评论(0编辑  收藏  举报