首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >获取类中的所有变量名

获取类中的所有变量名
EN

Stack Overflow用户
提问于 2010-01-24 18:38:33
回答 4查看 150.1K关注 0票数 101

我有一个类,我想找到它的所有公共字段(而不是方法)。我该怎么做呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 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包。

票数 145
EN

Stack Overflow用户

发布于 2016-09-17 01:02:12

https://docs.oracle.com/javase/tutorial/reflect/class/classMembers.html还提供了定位方法和构造函数的图表。

票数 46
EN

Stack Overflow用户

发布于 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());
票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2126714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档