私は愚かすぎてグーグルを使用できないか、これまで誰もこの問題に遭遇していません。
次のコードをコンパイルしようとしています。
public interface MyClass {
public class Util {
private static MyClass _this;
public static <T extends MyClass> T getInstance(Class<T> clazz) {
if(_this == null) {
try {
_this = clazz.newInstance();
} catch(Exception e) {
e.printStackTrace();
}
}
return _this;
}
}
}
しかし、「return _this;」という行で 「タイプの不一致: MyClass から T に変換できません」というエラーが表示されるのはなぜですか? T は MyClass を拡張するので、どこに問題があるのでしょうか? 行を「return (T)_this;」に変更すると、チェックされていないキャストに関する警告が表示されますが、警告は好きではありません;-) エラーや警告なしで目的を達成する方法はありますか?