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