首页 > 解决方案 > Java 泛型用例

问题描述


我正在尝试在这个用例中使用 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 值的 DevExtension 实例与实现 DevObject 的类相同。

任何帮助,将不胜感激。

标签: javagenerics

解决方案


您正在寻找CRTP

public interface DevObject<T extends DevObject<T>> { 
    void addExtension(DevExtension<T> extension);
}

public interface DevExtension<T extends DevObject<T>> {
    void start(T devObject); 
}

推荐阅读