参考答案
Class类的getDeclaredFields()与getFields()方法的两个区别:
- getDeclaredFields(): 获取所有本类自己声明的属性, 不能获取父类和实现的接口中的属性;
- getFields(): 只能获取所有 public 声明的属性, 包括获取父类和实现的接口中的属性。
实例:
public class TestGetFields extends TestGetFieldsSub implements TestGetFieldsInterface{ private String privateFieldSelf; protected String protectedFieldSelf; String defaultFieldSelf; public String publicFieldSelf; public static void main(String[] args) { System.out.println("-------- getFields --------"); for (Field field : TestGetFields.class.getFields()) { System.out.println(field.getName()); } System.out.println("-------- getDeclaredFields --------"); for (Field field : TestGetFields.class.getDeclaredFields()) { System.out.println(field.getName()); } } } class TestGetFieldsSub { private String privateField; protected String protectedField; String defaultField; public String publicField; } interface TestGetFieldsInterface { String interfaceField = ""; }
结果:
-------- getFields -------- publicFieldSelf interfaceField publicField -------- getDeclaredFields -------- privateFieldSelf protectedFieldSelf defaultFieldSelf publicFieldSelf
以上,是Java面试题【Class类的getDeclaredFields()与getFields()方法的区别】的参考答案。
输出,是最好的学习方法。
欢迎在评论区留下你的问题、笔记或知识点补充~
—end—