Class类的getDeclaredFields()与getFields()方法的区别

参考答案

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—

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧