0

次のメソッドがあり、2つの文字列を返す必要があります。

  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取得できるので、私はむしろ、だけを返したいと思います。typefield

そして、呼び出しの時点で、メソッド-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

もちろん文字列配列を返すこともできますが、単にFieldを返す方が良いと思います

于 2013-01-21T10:35:39.917 に答える
2

任意の数の要素を返すためのより柔軟で正しいアプローチ-データコレクションのリスト実装を返します。

于 2013-01-21T10:39:56.927 に答える
1

両方のフィールドでサイズ2の配列を返すことができます。

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

2文字列を返そうとする代わりに、Fieldインスタンスを返すことができます。それ以外の場合は、Pairオブジェクトやカスタムオブジェクトのように、2つの文字列を含むオブジェクトを返すことができます。

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 に答える
1

最終的に他のコードでフィールドオブジェクトの属性を使用するため、リストを返してみてください。

さらに、メソッドをより保守しやすくします。メソッドの利用者は、Fieldオブジェクトから必要なデータを決定できます。

于 2013-01-21T11:04:36.433 に答える