我现在正在开发一个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之间进行转换。有一种简单的方法可以解决它吗?
谢谢!
答案 0 :(得分:19)
您使用Integer
作为类型参数的名称,隐藏 java.lang.Integer
。
public class DistanceQueue<Integer> extends PriorityQueue<Integer>
^^^^^^^
您应该只删除类型参数:
public class DistanceQueue extends PriorityQueue<Integer>