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

jwi*_*ndy 11 java

我很想用jGraphT做这样的代码

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

public class SteinerTreeCalc  {

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


}
Run Code Online (Sandbox Code Playgroud)

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

更新:

在我的目标中,已经为Vertex和Edges(V和E)选择了类,但非常感谢那些想出的人:

public class SteinerTreeCalc <V, E, T extends DirectedGraph<V, E> & WeightedGraph<V, E>>  
{ 
   ....
}
Run Code Online (Sandbox Code Playgroud)

amo*_*fis 21

是的,这是可能的:

public class SteinerTreeCalc<T extends DirectedGraph<V,E> & WeightedGraph<V,E>> {
  public SteinerTreeCalc(T graph) {
    ......
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 我认为它是一些内部类,其中"V"和"E"是已知的.在原始问题中也没有. (2认同)

GHa*_*Had 9

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

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
}
Run Code Online (Sandbox Code Playgroud)

这些是你问题中提到的接口和构造函数.


Enn*_*oji 6

这可能是你想要的:
Java的隐藏功能