【发布时间】:2025-12-25 15:00:12
【问题描述】:
是否有可能打印出类中每个字段的名称和类型?现在我有以下代码
try {
for (Field field : obj.getClass().getDeclaredFields()) {
System.out.println("User Preferences " + field.getName()
+ " - " + field.getType());
}
}catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
其中显示:
User Preferences customer - class java.lang.String
User Preferences token - class java.lang.String
User Preferences class1 - class com.activity.webservice.Login$Class1
这就是我想要得到的(几乎)。
问题是让它进入自定义类 Class1。 Class1 类中可以有多个类,也可以没有类。 Class1 类可以有多个字段,也可以没有字段。
我想要这样的东西打印出来
User Preferences customer - class java.lang.String
User Preferences token - class java.lang.String
User Preferences class1 - class com.activity.webservice.Login$Class1
User Preferences string1 - class java.lang.String
User Preferences class2 - class com.activity.webservice.Login$Class2
User Preferences string2 - class java.lang.String
User Preferences string3 - class java.lang.String
如何遍历未知数量的字段和类?
感谢您的帮助
编辑
这是我的登录类的结构
public class Login {
public String token;
public String customerid;
public Class1 class1;
public class Class1 {
public Class2 class2;
public String string1;
public class Class2 {
public int int1;
public String string2;
public String string3;
}
}
}
【问题讨论】:
-
什么数据结构保存这些信息?
-
@m0skit0 这将是它自己的类中的一个方法。无论我传入什么对象,我都可以获得我需要的信息
-
使用递归方法——每一级进入成员类
-
@Bhaskar 我将如何传入新类进行迭代?我会让 obj = Class1 然后再次调用我的方法吗?当我没有看到另一个类时停止该方法?
-
您可以将成员字段的 Class 传递到递归调用中,如果当前 Class 令牌内部没有字段,即它是原始字段,则停止。 (或者想出你自己的自定义逻辑,何时停止进一步向下搜索)
标签: java android reflection iteration