我有一个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/