Java 通用使用格式

Que*_*ger 5 java generics

当我需要创建一个需要存储字符串的 ArrayList 时,我这样做 -

ArrayList<String> whatwhat = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)

在 Eclipse 中,当我<String>从上述语句的左侧或右侧省略时,我会收到警告。这让我想到了我的问题:为什么 Java 需要/允许这样做?难道我们不应该被要求只在一侧声明一个泛型类型吗?

rge*_*man 5

对于 Java 6 及之前版本,需要在两面输入内容。

但是,从 Java 7 开始,您可以在右侧使用“菱形运算符”、空尖括号<>,编译器将根据左侧的类型参数推断类型。

ArrayList<String> whatwhat = new ArrayList<>();  // Java 7+
Run Code Online (Sandbox Code Playgroud)