我有一个类,我想找到它的所有公共变量(不是函数)。我怎么能这样做? 谢谢!java:获得一个类中的所有变量名称
63
A
回答
94
Field[] fields = YourClassName.class.getFields();
返回该类的所有公共变量的数组。
getFields()
返回全班级的字段 - heirarcy。如果你想有只在相关的类定义的字段,而不是它的超类,使用getDeclaredFields()
,并用以下Modifier
方法筛选public
的:
Modifier.isPublic(field.getModifiers());
的YourClassName.class
文字实际上代表类型的对象java.lang.Class
。检查其文档以获取更有趣的反射方法。
上面的Field
类是java.lang.reflect.Field
。你可以看看整个java.lang.reflect
包。
21
1
正如一些网友提到,下面的代码可以帮助找到一个给定类的所有字段。
TestClass testObject= new TestClass().getClass();
Method[] methods = testObject.getMethods();
for (Method method:methods)
{
String name=method.getName();
if(name.startsWith("get"))
{
System.out.println(name.substring(3));
}else if(name.startsWith("is"))
{
System.out.println(name.substring(2));
}
}
但是更有趣的方法是如下:
与杰克逊库的帮助,我能找到一个地图类类型的字符串/整数/双,以及相应的值的所有类属性。 (不使用反射API!)
TestClass testObject = new TestClass();
com.fasterxml.jackson.databind.ObjectMapper m = new com.fasterxml.jackson.databind.ObjectMapper();
Map<String,Object> props = m.convertValue(testObject, Map.class);
for(Map.Entry<String, Object> entry : props.entrySet()){
if(entry.getValue() instanceof String || entry.getValue() instanceof Integer || entry.getValue() instanceof Double){
System.out.println(entry.getKey() + "-->" + entry.getValue());
}
}
3
您可以使用根据您的需要任意两个:
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());
相关问题
- 1. Java反射 - 获取一个类的所有实例变量名称
- 2. 获取包中声明的所有变量和常量名称
- 3. 我如何获得通过名称的变量在一个mixin
- 4. 如何获得一个变量的值在一个字符串中的名称?
- 5. 重构和混淆java中的所有变量名称
- 6. Kotlin反射 - 得到一个类的所有字段名称
- 7. 获取包中声明的所有Java类的名称
- 8. 删除R中所有变量的部分变量名称
- 9. Java:从变量中获取变量名称
- 10. 从字符串中获取所有变量名称javascript
- 11. 如何获得一个类的所有实例的变量的值
- 12. Python - 如何获得类中的所有静态变量?
- 13. 获取变量类型名称
- 14. 获得UL的所有值成变量
- 15. 有没有办法在类中获得某种类型的所有变量?
- 16. 获取@interface的所有变量名称或属性
- 17. Java:如何获得一个字符(或其类型分类)的Unicode名称?
- 18. 从内部获得一个可用的变量名的另一个变量
- 19. 如何获取列表中具有多个两个唯一值的所有变量的名称
- 20. 打印所有变量从一个类
- 21. 所有类都可见的变量Java
- 22. 获得私有变量的最后一个值类OOPS
- 23. 如何获取指定类别名称中的所有子类别名称?
- 24. 获得一个excel文件的名称
- 25. 如何获得一个类的所有子类(在AS3中)
- 26. SSIS脚本任务获取所有变量名称和值
- 27. 如何在另一个变量的名称中使用变量?
- 28. 如何获得所有全局变量
- 29. MDX;获得除了名称之外的所有值的度量集合度量
- 30. 如何获得字符串中变量的名称
您应该可以使用[反射API](http://java.sun.com/docs/books/tutorial/reflect/)完成此操作。 – Crozin 2010-01-24 10:41:20