getFields()与getDeclaredFields()区别:getFields()只能访问类中声明为公有的字段,私有的字段它无法访问,能访问从其它类继承来的公有方法.getDeclaredFields()能访问类中所有的字段,与public,private,protect无关,不能访问从其它类继承来的方法
getMethods()与getDeclaredMethods()区别:getMethods()只能访问类中声明为公有的方法,私有的方法它无法访问,能访问从其它类继承来的公有方法.getDeclaredFields()能访问类中所有的字段,与public,private,protect无关,不能访问从其它类继承来的方法
*
getConstructors()与getDeclaredConstructors()区别:getConstructors()只能访问类中声明为public的构造函数.getDeclaredConstructors()能访问类中所有的构造函数,与public,private,protect无关
class Person2 implements China{
private static String sex ;
public static String length;
}
class Person2 implements China{
private static String sex ;
public static String length;
}
public class Reflect_Example_10 {
public static void main(String[] args) {
/*
* getFields()与getDeclaredFields()区别:
* getFields()只能访问类中声明为公有的字段,私有的字段它无法访问,能访问从其它类继承来的公有方法.
* getDeclaredFields()能访问类中所有的字段,与public,private,protect无关,不能访问从其它类继承来的方法
*/
Class<?> demo = null;
try {
demo = Class.forName("com.reflect.Person2");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("====本类属性,不包括实现的接口或者父类的属性(public,protected,private)====");
Field[] fields = demo.getDeclaredFields();
for (Field field : fields) {
int mod = field.getModifiers();
String modifier = Modifier.toString(mod);
Class<?> type = field.getType();
String typeName = type.getName();
String fieldName = field.getName();
System.out.println("域:" + modifier + " " + typeName + " " + fieldName + ";");
}
System.out.println("====公有属性,包括实现的接口或者父类的公有属性(public)====");
Field[] superFields = demo.getFields();
for (Field field : superFields) {
int mod = field.getModifiers();
String modifier = Modifier.toString(mod);
Class<?> type = field.getType();
String typeName = type.getName();
String fieldName = field.getName();
System.out.println("域:" + modifier + " " + typeName + " " + fieldName + ";");
}
}
}
运行结果:
====本类属性,不包括实现的接口或者父类的属性(public,protected,private)====
域:private static java.lang.String sex;
域:public static java.lang.String length;
====公有属性,包括实现的接口或者父类的公有属性(public)====
域:public static java.lang.String length;
域:public static final java.lang.String name;
域:public static final int age;
原文:http://mxdxm.iteye.com/blog/927990