【发布时间】:2013-12-03 15:57:39
【问题描述】:
我有两个通用类
class Value<T>{...}
class Parameter<T>{...}
我想从另一个类(参数)调用一个方法
public <T> void put(Parameter<T> key, Value<T> value) {
parameters.put(key, value);
}
从我的主类中,我想用两个对象 Value 和 Parameter 来调用它,但是用这种方式使用 Type:
Value<Integer> v1 = new Value<Integer>(2);
Parameter<Integer> p1 = new Parameter<Integer>(3);
Params params = new Params();
params.put(p1,v1);
我从 Eclipse 收到这个错误:
The method put(Parameter<T>, Value<T>) in the type Parameters is not applicable for the arguments (Parameter<Integer>, Value<Integer>)
任何提示我如何调用此方法而不会出现此错误?这些类不是我开发的,所以我试图调用它们但没有成功。
【问题讨论】:
-
T是否有任何限制? -
对 T @JeroenVannevel 施加约束是什么意思?我在 Params 类开始时看到的唯一奇怪的是:@SuppressWarnings("rawtypes")。
-
泛型声明没问题。您确定您没有多个名为
Parameter或Value的类,并且您使用来自一个包的类,而Params类中的方法期望来自不同包的实例? -
@jambjo 你是对的,我意识到我正在使用来自同一个包和一个 jar 中的一个库的类 Value,所以现在删除我包中的类没有错误。跨度>
标签: java class generics methods