java 使用反射中的几个方法区别

public void reflect2(){
      try {
          User user=new User();
          Field[]fields = user.getDeclaredFields();//通过class取出当前class中的所有字段
           for (Field field : fields) { 
                  System.out.println(field.getName()+" "+field.getType());
          }
     } catch (Exception e) {
           e.printStackTrace();
     }
}

* getFields()与getDeclaredFields()区别:

getFields()只能访问类中声明为公有的字段,私有的字段它无法访问.getDeclaredFields()能访问类中所有的字段,与public,private,protect无关
* getMethods()与getDeclaredMethods()区别:

getMethods()只能访问类中声明为公有的方法,私有的方法它无法访问,能访问从其它类继承来的公有方法.getDeclaredFields()能访问类中所有的字段,与public,private,protect无关,不能访问从其它类继承来的方法
* getConstructors()与getDeclaredConstructors()区别:getConstructors()只能访问类中声明为public的构造函数.getDeclaredConstructors()能访问类中所有的构造函数,与public,private,protect无关

原文地址:https://www.cnblogs.com/weinan2087/p/3123572.html