我不明白为什么会出现此编译错误
element(T)
绑定不匹配:类型的泛型方法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
扩展Resource
,那么为什么不匹配<T extends Resource>
?
我如何约束 element() 方法以接受 Resource 类对象或任何 Resource 子类对象作为参数?