Boz*_*zho 126
Field[] fields = YourClassName.class.getFields();
Run Code Online (Sandbox Code Playgroud)
返回该类的所有公共变量的数组.
getFields()返回整个班级中的字段 - heirarcy.如果您希望仅在相关类中定义字段,而不是其超类,请使用以下方法getDeclaredFields()过滤这些字段:publicModifier
Modifier.isPublic(field.getModifiers());
Run Code Online (Sandbox Code Playgroud)
的YourClassName.class字面实际上代表类型的对象java.lang.Class.检查其文档以获得更有趣的反射方法.
Field上面的课是java.lang.reflect.Field.你可以看一下整个java.lang.reflect包装.
cel*_*epo 34
https://docs.oracle.com/javase/tutorial/reflect/class/classMembers.html.还有用于定位方法和构造函数的图表.
Sah*_*bra 12
您可以根据需要使用这两种中的任何一种:
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.
Run Code Online (Sandbox Code Playgroud)
要仅过滤上面列表中的公共字段(根据要求),请使用以下代码:
List<Field> fieldList = Arrays.asList(fields).stream().filter(field -> Modifier.isPublic(field.getModifiers())).collect(
Collectors.toList());
Run Code Online (Sandbox Code Playgroud)