我试图在这种用例中使用Java泛型,并且在没有在线找到任何答案之后需要一些帮助弄清楚如何实现它。这是我的用例。...
// Interface DevObject
public interface DevObject {
void addExtension(DevExtension extension);
}
// Interface DevExtension
public interface DevExtension<T extends DevObject> {
void start(T devObject);
}
然后我创建两个分别像这样实现DevObject和DevExtension的类...
public class MyDevObject implements DevObject {
void addExtension(DevExtension extension) {
}
}
public class MyDevObjectExtension implements DevExtension<MyDevObject> {
void start(MyDevObject devObject) {
}
}
但是我真正想做的是使用泛型修改DevObject上的addExtension方法,以便它只能添加其通用T值与实现DevObject的类相同的DevExtension实例。
任何帮助将不胜感激。
答案 0 :(得分:2)
您正在寻找CRTP:
public interface DevObject<T extends DevObject<T>> {
void addExtension(DevExtension<T> extension);
}
public interface DevExtension<T extends DevObject<T>> {
void start(T devObject);
}