Java泛型用例

时间:2018-08-31 18:32:38

标签: java generics


我试图在这种用例中使用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实例。

任何帮助将不胜感激。

1 个答案:

答案 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); 
}