2016-11-08 58 views
0

调用通用参数化方法是什么错误mesaage意味着,以及如何从另一个类调用泛型参数化方法: 以下是错误消息:在Java

The method add(int, Integer) in the type BinaryMinHeap<Integer> is not applicable for the arguments (int, Vertex<Integer>) 

呼吁片段:

for(Vertex<Integer> vertex : graph.getAllVertex()){ 
       minHeap.add(Integer.MAX_VALUE, vertex); 
      } 

方法被称为是:

public void add(int weight,T key) { 
      Node node = new Node(); 
      node.weight = weight; 
      node.key = key; 
      allNodes.add(node); 
      int size = allNodes.size(); 
      int current = size - 1; 
      int parentIndex = (current - 1)/2; 
      nodePosition.put(node.key, current); 

      while (parentIndex >= 0) { 
       Node parentNode = allNodes.get(parentIndex); 
       Node currentNode = allNodes.get(current); 
       if (parentNode.weight > currentNode.weight) { 
        swap(parentNode,currentNode); 
        updatePositionMap(parentNode.key,currentNode.key,parentIndex,current); 
        current = parentIndex; 
        parentIndex = (parentIndex - 1)/2; 
       } else { 
        break; 
       } 
      } 
     } 
+2

那么,错误消息说, all:你传递一个'Vertex ',但你需要传递一个'Integer'。 –

+0

如何声明'minHeap'? –

回答

0

我不确定你想要完成什么,但是你不能将Vertex<Integer>转换成只需要Integer的东西。如果您想添加Vertex的每个元素,请使用嵌套循环。否则,您必须以某种方式将Vexter<Integer>映射到Integer

参见方法签名: BinaryMinHeap<Integer>.add(int, Integer)

但是,你正在试图用Vertex<Integer> vertex这样称呼它:add(int, Vertex<Integer>),这是不适用(如错误说明)