このコンパイル エラーが発生する理由がわかりません
境界の不一致:
element(T)
type のジェネリック メソッドはResource
、引数 ( ) には適用できませんClass<Chassis>
。推論された型Class<Chassis>
は、境界付きパラメーターの有効な代替ではありません<T extends Resource>
。
次のコードを使用します。
public class Resource {
protected abstract class has<T extends Resource> {
public has(T v) {}
}
protected <T extends Resource> has element(T v) {
return new has<T>(v) {};
}
}
class Car extends Resource {
has chassis = element(Chassis.class);
}
class Chassis extends Resource {
}
なぜこれが無効なのですか?Chassis
extendsResource
であるのに、なぜ と一致しないの<T extends Resource>
ですか?
また、 Resource クラス オブジェクトまたは Resource サブクラス オブジェクトを引数として受け入れるように element() メソッドを制約するにはどうすればよいでしょうか?