Java新手:两者之间的区别<&燃气轮机;和()?
我正在学习Java,有一个关于和()之间的区别的问题,比如定义类的时候?例如:Java新手:两者之间的区别<&燃气轮机;和()?,java,class,Java,Class,我正在学习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;
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;
}
}
公共类计数器映射实现java.io.Serializable{
私有静态最终长serialVersionUID=11111;
mapmf;
地图计数器地图;
受保护计数器(K键){
计数器值计数器=计数器映射.get(键);
if(valueCounter==null){
valueCounter=新计数器(mf);
计数器映射。put(键、值计数器);
}
返回值计数器;
}
}
如有任何见解,将不胜感激。谢谢。尖括号
用于表示通用类型。例如,包含字符串的列表类型为list
。泛型是一个中间主题,如果您是初学者,在不了解其他Java和编程基础知识的情况下,它可能会有点混乱
括号()
用于调用和声明方法,其中包含方法参数和参数
您的示例是使用泛型在映射中存储任何类型的数据,而不必具体说明数据的类型。因此,如果我想要一个计数器映射
,它存储Long
和String
类型的键值对,我可以这样声明和初始化它:
CounterMap myCounterMap=new CounterMap()代码>
从Java 7开始,您可以使用称为“钻石”的东西,并将其简化为:
CounterMap myCounterMap=new CounterMap()代码>有些关联
参数、变量、参数--
类型参数、类型变量、类型参数--
f()//键入参数`N`和绑定的`Number`
{
//这里,`N`是一个类型变量。
}
f();//使用类型参数'Integer'实例化,该参数为'Number'`
在这些条件下,和()永远不能互换,真的吗?始终适用于泛型类型;()总是用于方法参数。正如您将在下面看到的,是用于所谓的“泛型”的。您可能希望暂时忽略它们以及它们内部的内容,并将重点放在()上,这一点更为重要。唯一不同的是,我认为,当您运行javac时,您将看到一个警告;以后再学仿制药。谢谢你,本!这很有帮助。
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`
<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`