我正在学习Java并且对<>之间的区别有疑问和(),比如定义一个类?例如:
public class CounterMap<K, V> implements java.io.Serializable {
private static final long serialVersionUID = 11111;
MapFactory<V, Double> mf;
Map<K, Counter<V>> counterMap;
protected Counter<V> ensureCounter(K key) {
Counter<V> valueCounter = counterMap.get(key);
if (valueCounter == null) {
valueCounter = new Counter<V>(mf);
counterMap.put(key, valueCounter);
}
return valueCounter;
}
}
任何见解都将受到赞赏。感谢。
答案 0 :(得分:2)
尖括号< >
用于表示泛型类型。例如,包含字符串的列表是类型List<String>
。泛型是一个中间话题 - 如果你是初学者 - 可能有点混乱,没有先了解其他Java和编程基础知识。
括号( )
用于调用和声明方法,它们包含方法参数和参数。
您的示例使用泛型在地图中存储任何类型的数据,而无需具体说明类型。因此,如果我想要CounterMap
存储Long
和String
类型的键值对,我可以像这样声明并初始化它:
CounterMap<Long, String> myCounterMap = new CounterMap<Long, String>();
从Java 7开始,您可以使用名为“diamond”的内容并将其简化为:
CounterMap<Long, String> myCounterMap = new CounterMap<>();
答案 1 :(得分:0)
有点相关。
参数,变量,参数 -
void f(Number n) // define a parameter `n` of type `Number`
{
// here, `n` is a variable. (JLS jargon: "parameter variable")
}
f(x); // invoke with argument `x`, which must be a `Number`
type-parameter,type-variable,type-argument -
<N extends Number> f() // type-parameter `N` with bound `Number`
{
// here, `N` is a type-variable.
}
<Integer>f(); // instantiate with type-argument `Integer`, which is a `Number`
我的thoughts就这些条款而言。