1. ホーム
  2. java

[解決済み] Java Genericメソッドをstaticにするには?

2022-03-04 18:56:35

質問

以下は、配列に1つの項目を追加するJava汎用クラスの作成方法に関するスニペットです。 appendToArrayをスタティックメソッドにするにはどうしたらよいでしょうか。 メソッドのシグネチャにstaticを追加すると、コンパイルエラーになります。

public class ArrayUtils<E> {

        public E[] appendToArray(E[] array, E item) {
            E[] result = (E[])new Object[array.length+1];
            result[array.length] = item;
            return result;
        }
}

解決方法は?

に変更することです。

public static <E> E[] appendToArray(E[] array, E item)

重要な内容です。

戻り値の前にある汎用式は、常に新しい汎用型変数を導入(宣言)します。

さらに、型と型の間の型変数( ArrayUtils ) と静的メソッド ( appendToArray ) が互いに干渉することはありません。

で、これはどういうことかというと。 私の回答では <E> を隠すことになります。 E から ArrayUtils<E> でない場合、そのメソッドは static . そして <E> は何の関係もありません。 E から ArrayUtils<E> .

この事実をよりよく反映させるためには、より正しい答えが必要です。

public static <I> I[] appendToArray(I[] array, I item)