最近,我遇到了这种不寻常的(对我来说)Java语法...下面是一个示例:
List list = new <String, Long>ArrayList();
Run Code Online (Sandbox Code Playgroud)
请注意<String, Long>类型参数的位置...它不是在普通类型之后,而是之前。我不介意承认我以前从未见过这种语法。另请注意,ArrayList只有1个时有2个类型参数。
类型参数的位置是否与将其放在类型后面的含义相同?如果不是,不同的定位是什么意思?
为什么ArrayList只有1 个类型有2个类型参数是合法的?
我搜寻了平常的地方,例如。Angelika Langer等人在这里,但是除了ANTLR项目的Java语法文件中的语法规则之外,找不到任何关于此语法的提及。
考虑以下代码
public class Test {
public static void main(String... strings) {
System.out.println("String, " + false);
System.out.println("String, " + getFalse());
System.out.println("String, " + new TestClass());
System.out.println("String, " + (new TestClass() == null));
System.out.println("String, " + new TestClass() == null);
}
private static class TestClass {
public String toString() {
return "false";
}
}
private static boolean getFalse() {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
为什么最后一次System.out.println打印的输出与其他输出不同?我不知道,这是一个错误吗?是否与plus运算符有关?StringBuilder?