Java新手:<>之间的区别和()?

时间:2015-09-12 02:05:38

标签: 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;

   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;
   }
}

任何见解都将受到赞赏。感谢。

2 个答案:

答案 0 :(得分:2)

尖括号< >用于表示泛型类型。例如,包含字符串的列表是类型List<String>。泛型是一个中间话题 - 如果你是初学者 - 可能有点混乱,没有先了解其他Java和编程基础知识。

括号( )用于调用和声明方法,它们包含方法参数和参数。

您的示例使用泛型在地图中存储任何类型的数据,而无需具体说明类型。因此,如果我想要CounterMap存储LongString类型的键值对,我可以像这样声明并初始化它:

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就这些条款而言。