有向图的一般实现

时间:2014-08-10 22:40:47

标签: java generics

我在实现Generic DirectGraph Implementation时遇到了问题。请帮我!

public interface DirectedGraph<Vertex<T extends Comparable<T>>> {
   <T extends Comparable<T>> boolean  addVertex(Vertex<T> v);
   <T extends Comparable<T>> boolean addEdge(Vertex<T> v1, Vertex<T> v2);
   int size();
   <T extends Comparable<T>>boolean removeEdge(Vertex<T> v1, Vertex<T> v2);
   <T extends Comparable<T>>boolean hasEdge(Vertex<T> v1, Vertex<T> v2);

}

public class Vertex<E extends Comparable<E>> {
  E vertex;
}

上述代码有什么问题? Eclipse显示错误

Multiple markers at this line
- Syntax error on token "<", , expected
- The type parameter Vertex is hiding the type 
 Vertex<E>
- Syntax error on token ">>>", >> expected

1 个答案:

答案 0 :(得分:2)

要么使类通用,要么使用泛型方法。在您的情况下,您同时执行这两种操作。此外,由于您已确定DirectedGraph将使用Vertex类型,因此它不是类Vertex但是类型 “顶点”。当您使用类或通用方法时,您使用具体的类或接口类型,而不是在定义本身 < / p>

public interface DirectedGraph<T extends Comparable<T>> {
        boolean  addVertex(Vertex<T> v);
        boolean addEdge(Vertex<T> v1, Vertex<T> v2);
        int size();
        boolean removeEdge(Vertex<T> v1, Vertex<T> v2);
        boolean hasEdge(Vertex<T> v1, Vertex<T> v2);

    }

    class Vertex<E extends Comparable<E>> {
      E vertex;
    }