无法将(int,double)对添加到HashMap <integer,double =“”> </integer,>

时间:2014-12-08 13:32:26

标签: java types

我现在正在开发一个Java项目,我有一个名为DistanceQueue的类。它的签名由

给出
public class DistanceQueue<Integer> extends PriorityQueue<Integer>

在本课程中,有一个方法

public boolean add(int v)

将键值对(v,Double.MAX_VALUE)添加到名为DistanceQueue类的称为距离的HashMap中。但是,在add(int v)里面,当我输入

distances.put(v, Double.MAX_VALUE);

我收到以下错误:

DistanceQueue.java:98: error: no suitable method found for put(int,double)
            distances.put(v, Double.MAX_VALUE);
                     ^
    method HashMap.put(Integer,Double) is not applicable
      (actual argument int cannot be converted to Integer by method invocation conversion)
  where Integer is a type-variable:
    Integer extends Object declared in class ShortestPaths.DistanceQueue
1 error

有谁知道我收到此错误的原因?我认为Java会自动在int和Integer之间进行转换。有一种简单的方法可以解决它吗?

谢谢!

1 个答案:

答案 0 :(得分:19)

您使用Integer作为类型参数的名称,隐藏 java.lang.Integer

public class DistanceQueue<Integer> extends PriorityQueue<Integer>
                           ^^^^^^^

您应该只删除类型参数:

public class DistanceQueue extends PriorityQueue<Integer>