1
interface A<T extends B</*?*/>> {
method(T param);
}
interface B<U extends A> {
// ...
}
在上面的代码片断中,如何表示方法A#method
应该只接受参数,该参数是调用方法的类型(或其后代)参数化的对象。如何将type参数的值绑定到`this`的类型?
我想才达到这样的事:
interface Vehicle<T extends SteeringDevice</*?*/> {
default steer(T steeringDevice) {
// ...
}
}
interface SteeringDevice<U extends Vehicle> {
// ...
}
// -----
class Car implements Vehicle<SeeringWheel> {
// ...
}
class SteeringWheel implements SteeringDevice<Car> {
// ...
}
// -----
class Bike implements Vehicle<Handlebars> {
// ...
}
class Handlebars implements SteeringDevice<Bike> {
// ...
}
...这里有可能使安全地调用new Car().steer(new SteeringWheel())
但不new Car().steer(new Handlebars())
。
你是不是想找点像'>'? –
EJP
你真的需要'SteeringDevice'是通用的吗?如果您不这样做,请取消类型参数,并且您应该能够轻松实现所有功能。如果你这样做,请提供更多关于你想要做什么的详细信息,这需要type参数,以便我们可以提供一个解决方案(可能需要重构)。 – ajb