Diamond运算符在Java 7中引入,使代码更可读,但它无法与匿名内部类一起使用。在Java 9中,它可以与Annonmous类一起使用,并简化代码并提高可读性。在Java 9之前考虑以下代码。
public class Tester { public static void main(String[] args) { Handler<Integer> intHandler=new Handler<Integer>(1) { @Override public void handle() { System.out.println(content); } }; intHandler.handle(); Handler<? extends Number> intHandler1=new Handler<Number>(2) { @Override public void handle() { System.out.println(content); } }; intHandler1.handle(); Handler<?> handler=new Handler<Object>("test") { @Override public void handle() { System.out.println(content); } }; handler.handle(); } } abstract class Handler<T> { public T content;public Handler(T content) { this.content=content; }
abstract void handle(); }
输出
1 2 Test
在Java 9中,无涯教程可以对匿名类使用<>运算符,如下所示。
public class Tester {
public static void main(String[] args) {
Handler<Integer> intHandler=new Handler<>(1) {
@Override
public void handle() {
System.out.println(content);
}
};
intHandler.handle();
Handler<? extends Number> intHandler1=new Handler<>(2) {
@Override
public void handle() {
System.out.println(content);
}
};
intHandler1.handle();
Handler<?> handler=new Handler<>("test") {
@Override
public void handle() {
System.out.println(content);
}
};
handler</span><span class="pun">.</span><span class="pln">handle</span><span class="pun">();</span><span class="pln">
}
}
abstract class Handler<T> {
public T content;
public Handler(T content) {
this.content=content;
}
abstract void handle();
}
输出
1 2 Test