是否可以循环遍历java中的类成员?

Gen*_* S. 8 java dto

我有一个拥有大量成员的DTO.我想知道Java是否支持类的for(in)的想法.我不认为这样做,但是如果它确实会让我感到悲伤,所以,我想我会把问题抛到那里.

Jon*_*eet 26

好吧,你可以用反射来做到这一点:

for (Field field : clazz.getFields())
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

(或等效的方法等)

然后,您可以获取特定实例的字段值或静态值.


Osc*_*Ryz 7

确实如此,它有点麻烦.

你必须使用反射.

请参阅:Class.getDeclaredFieds()

返回Field对象的数组,这些对象反映由此Class对象表示的类或接口声明的所有字段

你可以在这里看到一个例子

从Class对象获取Field对象有三种方法.

 Class cls = java.awt.Point.class;

 // By obtaining a list of all declared fields.
 Field[] fields = cls.getDeclaredFields();

 // By obtaining a list of all public fields, 
 // both declared and inherited.
 fields = cls.getFields();
 for (int i=0; i<fields.length; i++) {
   Class type = fields[i].getType();
   process(fields[i]);
 }

 // By obtaining a particular Field object.
 // This example retrieves java.awt.Point.x.
 try {
   Field field = cls.getField("x");
   process(field);
   } catch (NoSuchFieldException e) {
 }
Run Code Online (Sandbox Code Playgroud)

有关更多选项,请参阅Class类定义.