Java中ADT实现实例化语法疑问:两种Queue声明的区别
关于Java泛型实例化中菱形语法的区别
这俩写法在功能上是完全等价的,核心区别在于Java版本支持性和语法简洁性:
private Queue<Airline> queue = new Queue<Airline>();:这是Java 7之前必须使用的传统写法。早期Java编译器无法从变量的声明类型中自动推断实例化时的泛型参数,所以你必须在new Queue<>里重复指定Airline,明确告诉编译器这个队列的泛型类型。private Queue<Airline> queue = new Queue<>();:这是Java 7引入的**菱形运算符(Diamond Operator)**带来的简化写法。现在编译器可以通过左边的变量声明Queue<Airline>,自动推断出实例化时应该使用的泛型参数是Airline,不需要再重复书写类型,减少了代码冗余,让代码更清爽。
额外小提醒:
顺便提一句,Queue是Java中的接口,你没办法直接用new Queue<>()实例化它,得使用它的实现类(比如LinkedList、ArrayDeque),正确的写法应该是private Queue<Airline> queue = new LinkedList<>();这类。不过这属于实现细节,不影响你问的泛型语法区别~
总的来说,只要你的项目基于Java 7或更高版本,非常推荐用菱形语法的写法,代码更简洁,可读性更好,且和老写法功能完全一致。
内容的提问来源于stack exchange,提问作者lio
相关产品推荐
相关产品推荐

