在java中调用Generic参数化方法

时间:2016-11-08 08:13:40

标签: java generics graph

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

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;
                }
            }
        }

1 个答案:

答案 0 :(得分:0)

我不确定您要完成的任务,但是您无法将double d = 1e-234; // using Statement works, the number gets rounded and 0 is inserted try (Statement stmt = conn.createStatement()) { stmt.executeUpdate("insert into test values (" + d + ")"); } // using PreparedStatement fails, throws an IllegalArgumentException: Underflow try (PreparedStatement stmt = conn.prepareStatement("insert into test values (?)")) { stmt.setDouble(1, d); stmt.executeUpdate(); } 传递给只需要Vertex<Integer>的内容。如果要添加Integer的每个元素,请使用嵌套循环。否则,您必须以某种方式将Vertex映射到Vexter<Integer>

参见方法签名: Integer

但是,您尝试使用BinaryMinHeap<Integer>.add(int, Integer)调用它:Vertex<Integer> vertex,这不适用(如错误中所述)