参考答案
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—
