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