在Java中,有没有办法指定参数实现两个接口

2022-09-05 00:24:42

我很想用jGraphT做这样的代码

/*
  interface DirectedGraph<V,E> { ...}
  interface WeightedGraph<V,E> { ...}
*/

public class SteinerTreeCalc  {

    public SteinerTreeCalc( < ??? implements DirectedGraph<V,E>, WeightedGraph<V,E> > graph )  {
     ......
    }


}

我想创建一个构造函数,要求一个实现两个接口的对象。

更新:

在我的目标中,已经为Vertex和Edges(V和E)选择了类,但是非常感谢提出以下方法的人:

public class SteinerTreeCalc <V, E, T extends DirectedGraph<V, E> & WeightedGraph<V, E>>  
{ 
   ....
}

答案 1

是的,有可能:

public class SteinerTreeCalc<T extends DirectedGraph<V,E> & WeightedGraph<V,E>> {
  public SteinerTreeCalc(T graph) {
    ......
  }
}

答案 2

应该这样工作,但这是更复杂的泛型逻辑,希望你能适应:

public static interface DirectedGraph<V, E> {
}

public static interface WeightedGraph<V, E> {
}

public <V, E, T extends DirectedGraph<V, E> & WeightedGraph<V, E>> SteinerTreeCalc(T bothInterfaces) {
    // do it
}

这些是接口和构造函数,如您的问题中所问。


推荐