以下がコンパイルされない理由が少し混乱しています。
public <E extends Object> E doSomething() {
return new Object();
}
私は問題を少し調査し、(E) へのキャストやクラス リテラルの使用などのさまざまな修正を見つけましたが、上記の実際の問題点はまだわかりません。
次の場合を除いて、 whileEは常に type のインスタンスになり、 type のインスタンスになるObjectことObjectはないため、機能しません。E
Object o = doSomething(); //If your code compiled, this call would work
それ以外の場合は、問題が発生します。投稿したコードのコンテキストでこの呼び出しを検討してください。
String s = doSomething();
Object本当にString. _ コンパイラは、実行時にこの状況に遭遇するのを防ぎます。
Objectシグネチャが を返すことを示し、が の任意のサブクラスでEあると主張するメソッドでを返そうとしています。がサブクラスである場合、 はであると主張するのに十分ではありません。EObjectEObjectE