我有许多类,可以包含一个或多个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());
    }

10-08 14:13