【发布时间】:2015-01-14 03:23:27
【问题描述】:
我记得看到过类似以下的声明:
private static Logger log = Logger.getLogger(<>.class);
优点是它可以从一个班级粘贴到另一个班级,而不会意外成为另一个班级的记录器。
现在,我无法编译,语法一定是错误的。那么 究竟是自己解决了什么问题(不是 ArrayList() 等)?
谢谢
更新:
我认为它是合法语法的断言来自:
- 我在网上看到它是一个合法且漂亮的把戏。
- 我和一位同事都使用 Java 7 将其粘贴到 IntelliJ 中,并且编译正确。
也就是说,我找不到可以让我再次访问该页面的搜索,而且我现在无法编译!所以我希望有编译器或 Java 规范知识的人可以明确地说它是否有效以及默认值是什么。
【问题讨论】:
-
什么都没有。它在语法上不正确。
-
据我所知,
<>.class不合法,也从未合法。菱形运算符(在 Java 7 中引入)仅在您的上一个示例 (new ArrayList<>()) 中使用,以指示应该推断构造函数调用的泛型类型参数。 (没有菱形运算符表示构造了原始类型。) -
我认为某些 IDE 可能会隐藏具有该语法的类型,但它实际上仍然存在?
标签: java diamond-operator