1. ホーム
  2. java

[解決済み] Java InstanceofとGenerics

2022-04-29 01:49:26

質問

値のインデックスを探すために一般的なデータ構造を調べる前に、その値が this がパラメータ化されています。

でも、これをやるとEclipseが文句を言うんです。

@Override
public int indexOf(Object arg0) {
    if (!(arg0 instanceof E)) {
        return -1;
    }

これがエラーメッセージです。

<ブロッククオート

汎用型情報は実行時に消去されるため、代わりに消去オブジェクトを使用します。

どうすればいいのでしょうか?

どのように解決するのですか?

エラーメッセージが全てを物語っています。実行時に型が消えていて、それを確認する方法がないのです。

こんな感じで、オブジェクトのファクトリーを作れば捕まえられるかもしれません。

 public static <T> MyObject<T> createMyObject(Class<T> type) {
    return new MyObject<T>(type);
 }

そして、オブジェクトのコンストラクタにその型、つまり変数を格納して、メソッドを次のようにします。

        if (arg0 != null && !(this.type.isAssignableFrom(arg0.getClass()))
        {
            return -1;
        }