Eclipse のソース コードにジェネリックが欠落している場合は常に、「ジェネリック型引数を推測します...」と提案されます。
問題は、「ジェネリック型引数を推測...」が実際に何かを推測したことがないと思うことです。通常、提案はありません。
どのようなシナリオで機能しますか? それはどのように機能しますか?
何かを「推測」できるケースがいくつかあります - Eclipse はまだ空白のままです。
以下は、Eclipse で「ジェネリック型引数の推測」を使用する方法を示す例です。
最初にジェネリック クラスを宣言します。
// GenericFoo.java
public class GenericFoo<T> {
private T foo;
public void setFoo(T foo) {
this.foo = foo;
}
public T getFoo() {
return foo;
}
}
次に、型を指定せずにインスタンス化し、不要な型キャストを行います。
// GenericFooUsage.java before refactoring
public class GenericFooUsage {
public GenericFooUsage() {
GenericFoo foo1 = new GenericFoo<Boolean>();
foo1.setFoo(new Boolean(true));
Boolean b = (Boolean)foo1.getFoo();
}
}
「ジェネリック型引数の推測」を適用した後、コードは次のようにリファクタリングされます。
// GenericFooUsage.java after refactoring
public class GenericFooUsage {
public GenericFooUsage() {
GenericFoo<Boolean> foo1 = new GenericFoo<Boolean>();
foo1.setFoo(new Boolean(true));
Boolean b = foo1.getFoo();
}
}
したがって、「ジェネリック型引数を推測する」は次のようになります。
Eclipse ヘルプから:
この置換が可能なすべての場所を特定した後、ジェネリック型の生の型の出現をパラメーター化された型に置き換えます。
利用可能: プロジェクト、パッケージ、およびタイプ
オプション: 「clone() がレシーバー タイプのインスタンスを返すと想定」。通常、行儀の良いクラスはこの規則を尊重しますが、コードが違反していることがわかっている場合は、ボックスのチェックを外してください。
制約のない型引数をそのままにしておきます (推論するのではなく)。たとえば ArrayList a の要素に制約がない場合、このボックスのチェックを外しても、Eclipse は引き続きワイルドカード パラメータを提供し、参照を ArrayList に置き換えます。
ページの最後に例があります。
HTH