我正在尝试在此用例中使用 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 方法,以便它只能添加具有与实现 DevObject 的类相同的泛型 T 值的 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);
}
关于Java 泛型用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52121043/