【发布时间】:2017-10-30 04:04:06
【问题描述】:
我对 java 泛型(使用 IntelliJ)不太熟悉。 我想要的是向集合添加通用值。 下面的代码有两个问题。
我读过https://docs.oracle.com/javase/tutorial/java/generics/methods.html 和https://docs.oracle.com/javase/tutorial/extra/generics/methods.html 但不知道为什么下面的代码有错误。
Q1) 我在 add 方法中的 map.put(T, T); 中有错误消息,因此 Ts 下的红色波纹:预期表达式,引入局部变量
Q2) 想知道在这种情况下,我应该将类声明为public class Test<T> 还是可以声明public class Test?
public class Test<T> {
Map<T, T> map;
public Test() {
map = new HashMap<T, T>();
}
public <T> void add(T value) throws Exception {
map.put(value, value); // Q1) red ripple under value: Expression Expected, introduce local variable
}
}
【问题讨论】:
-
从您的方法中删除
<T>。您正在隐藏类参数。 -
你是说map.put(value, value)吗?
-
你也不能
put(T, T)。也许你的意思是put(value, value)? -
你能提供一些上下文吗?什么是类测试?如果没有更多信息,就不可能回答问题 2。
-
啊,抱歉,打错了。当然我的意思是
map.put(value, value);