我有许多类,可以包含一个或多个TranslatableText
类型的属性。同样,某些类可能具有本身包括诸如List<TranslatableText>
或Map<String, TranslatableText>
之类的属性的属性。
您将如何高效地扫描这些类,并在通用集合中获取TranslatableText
的实例?
class Project{
String id;
TranslatableText name;
List<Action> actions;
}
class Action {
String id;
TranslatableText name;
TranslatableText description;
}
// getter & setters omitted
最佳答案
您可以使用这样的循环
// for super classes, use recursion.
for(Field f : obj.getClass().getDeclaredFields()) {
Class type = f.getType();
if (type == String.class || type == TranslatableText.class) {
Object value = f.get(object);
if (value != null)
map.put(f.getName(), value.toString());
}