首页   快速返回

反射获取字段注意点     所属分类 java
getFields 获取 public 字段 (含超类)


getDeclaredFields 只能获取当前类定义的字段 ( private protected public)

反射获取方法类似



GrandFather.java public class GrandFather{ private static String privateStaticFieldGrandFather = "privateStaticFieldGrandFather-value"; protected static String protectedStaticFieldGrandFather = "protectedStaticFieldGrandFather-value"; public static String publicStaticFieldGrandFather = "publicStaticFieldGrandFather-value"; private String privateFieldGrandFather = "privateFieldGrandFather-value"; protected String protectedFieldGrandFather = "protectedFieldGrandFather-value"; public String publicFieldGrandFather = "publicFieldGrandFather-value"; }
Father.java public class Father extends GrandFather{ private static String privateStaticFieldFather = "privateStaticFieldFather-value"; protected static String protectedStaticFieldFather = "protectedStaticFieldFather-value"; public static String publicStaticFieldFather = "publicStaticFieldFather-value"; private String privateFieldFather = "privateFieldFather-value"; protected String protectedFieldFather = "protectedFieldFather-value"; public String publicFieldFather = "publicFieldFather-value"; }
Son.java public class Son extends Father{ private static String privateStaticField = "privateStaticField-value"; protected static String protectedStaticField = "protectedStaticField-value"; public static String publicStaticField = "publicStaticField-value"; private String privateField = "privateField-value"; protected String protectedField = "protectedField-value"; public String publicField = "publicField-value"; }
System.out.println(Son.class.getSuperclass()); System.out.println(Son.class.getSuperclass().getSuperclass()); System.out.println(); Field[] fields = Son.class.getFields(); for(Field field:fields){ System.out.println(field.getName()); } System.out.println(); fields = Son.class.getDeclaredFields(); for (Field field : fields) { System.out.println(field.getName()); } System.out.println(); Son child = new Son(); Field field = Son.class.getField("publicStaticField"); System.out.println(field.get(null)); field = Son.class.getField("publicStaticFieldFather"); System.out.println(field.get(null)); field = Son.class.getField("publicStaticFieldGrandFather"); System.out.println(field.get(null)); field = Son.class.getField("publicField"); System.out.println(field.get(child)); field = Son.class.getField("publicFieldFather"); System.out.println(field.get(child)); field = Son.class.getField("publicFieldGrandFather"); System.out.println(field.get(child)); System.out.println(); field = Son.class.getDeclaredField("privateStaticField"); field.setAccessible(true); System.out.println(field.get(null)); field = Son.class.getDeclaredField("privateField"); field.setAccessible(true); System.out.println(field.get(child));
class field.Father class field.GrandFather publicStaticField publicField publicStaticFieldFather publicFieldFather publicStaticFieldGrandFather publicFieldGrandFather privateStaticField protectedStaticField publicStaticField privateField protectedField publicField publicStaticField-value publicStaticFieldFather-value publicStaticFieldGrandFather-value publicField-value publicFieldFather-value publicFieldGrandFather-value privateStaticField-value privateField-value

上一篇     下一篇
eclipse异常断点设置

eclipse设置条件断点和异常断点

spring5属性及内嵌属性解析

这样的人你敢要吗

我们怎么了

做局与破局