java - 为什么 ClassName.class.getFields() 仅返回公共(public)字段?

标签 java

我有一个A级

public class A {
    String host = "localhost";
    public String port = "8078";
    protected String preFix = "www.";
    private String postFix = "/uploads";
}

我使用下面的代码获取 A 类的字段详细信息

public static void main(String[] args) {
        Field[] fields = A.class.getFields();
        System.out.println("fields are:" + Arrays.toString(fields));
    }

输出为

fields are:[public java.lang.String org.test.A.port]

我了解 getFields() 方法仅返回那些使用公共(public)访问说明符声明的字段。

但是为什么 Java 实现 getFields() 像这样吗?

Java团队进行这种实现的主要意图是什么?

最佳答案

Class 类中有两个与字段相关的方法:

  • getFields()返回此的所有可公开访问的字段 类(接口(interface))及其所有父类(super class)
  • getDeclaredFields()返回 在此类(接口(interface))上声明的所有字段,包括带有 公共(public)、默认、 protected 和私有(private)可见性。

这两种方法用例之间的区别应该非常清楚。

关于java - 为什么 ClassName.class.getFields() 仅返回公共(public)字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30664773/

相关文章:

java - 从 JPA 2.0 中的实体对象中提取主键?

java - 如何在 Spring 中对两个查询使用相同的连接?

java - java中带注释的简单servlet(图像文件夹)

java - JUnit5:如何重复失败的测试?

java - 如何检索 JSP 页面中 POJO 字段的注释(JPA 和 Hibernate)

java - LDAP:使用过滤器避免 Active Directory 中的子 CN

java - Nifi 定制处理器显示错误 "the local variable flowfile cannot be assigned"

java - 以另一个实体为条件搜索实体

java - Java Swing 源代码中的何处是菜单上 Enter 按键的实现?

java - 将一个 JFrame 表单的 JTable 单元格的值传递到另一个表单的 JTextField 时出现问题