我有一个类,我想找到它的所有公共字段(而不是方法)。我该怎么做呢?
发布于 2010-01-24 18:41:42
Field[] fields = YourClassName.class.getFields();
返回类的所有公共变量的数组。
getFields()
返回整个类中的字段--继承。如果希望仅在相关类中定义字段,而不是其超类,请使用getDeclaredFields()
,并使用以下Modifier
方法过滤public
字段:
Modifier.isPublic(field.getModifiers());
YourClassName.class
文字实际上表示一个java.lang.Class
类型的对象。查看它的文档,了解更多有趣的反射方法。
上面的Field
类是java.lang.reflect.Field
。您可以查看整个java.lang.reflect
包。
发布于 2016-09-17 01:02:12
发布于 2017-10-26 16:13:06
您可以根据需要使用这两种方法中的任何一种:
Field[] fields = ClassName.class.getFields(); // returns inherited members but not private members.
Field[] fields = ClassName.class.getDeclaredFields(); // returns all members including private members but not inherited members.
要仅过滤上述列表中的公共字段(根据要求),请使用以下代码:
List<Field> fieldList = Arrays.asList(fields).stream().filter(field -> Modifier.isPublic(field.getModifiers())).collect(
Collectors.toList());
https://stackoverflow.com/questions/2126714
复制相似问题