Java 泛型用例

Dun*_*ebs 5 java generics


我正在尝试在这个用例中使用 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 实例。

任何帮助,将不胜感激。

SLa*_*aks 4

您正在寻找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)