0

我有以下方法,我需要返回两个字符串:

  1. type.getName() 的值
  2. field.getName() 的值

最好的方法是什么?

public static void getClassMetaData(List<Object> listClsObj) {
    ....

    for (Field field : declaredFields) {
         Class<?> type = field.getType();

         System.out.println(type.getName());
         System.out.println(field.getName());
      }
}
4

6 回答 6

4

我宁愿只返回Field,因为您可以从它本身获取 thetype和其他信息。field

然后在调用点,调用方法 -field.getType()以获取类型。


似乎您正在使用类的所有声明字段,在这种情况下,您可以只返回List<Field>:-

public static List<Field> getClassMetaData(List<Object> listClsObj) {

    // Rather than iterating over `declaredField`, just return it
    return declaredFields;
}
于 2013-01-21T10:35:47.187 回答
2

您当然可以返回一个 String 数组,但我认为最好简单地返回 Field

于 2013-01-21T10:35:39.917 回答
2

返回任意数量的元素的更灵活和正确的方法 - 返回数据集合的 List 实现。

于 2013-01-21T10:39:56.927 回答
1

您可以返回包含两个字段的大小为 2 的数组。

return new String[]{type.getName(),field.getName()};
于 2013-01-21T10:39:44.783 回答
1

当您最终在其他代码中使用字段对象的属性时,您应该尝试返回一个列表。

另外,这将使该方法更易于维护。该方法的使用者可以决定它需要来自 Field 对象的哪些数据。

于 2013-01-21T11:04:36.433 回答
1

您可以只返回 Field 实例,而不是尝试返回 2 个字符串。否则,您可以返回包含 2 String 的对象,例如 Pair 对象或自定义对象。

class Pair<F, S> {

    private final F first;
    private final S second;

    public Pair(F first, S second) {
        this.first = first;
        this.second = second;
    }
    // getter for first and second
}
于 2013-01-21T10:41:55.500 回答