Java 9 - Toán tử kim cương lớp bên trong
Toán tử kim cương đã được giới thiệu trong java 7 để làm cho mã dễ đọc hơn nhưng nó không thể được sử dụng với các lớp ẩn danh bên trong. Trong java 9, nó cũng có thể được sử dụng với lớp ẩn danh để đơn giản hóa mã và cải thiện khả năng đọc. Hãy xem xét đoạn mã sau trước Java 9.
Tester.java
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();
}
Đầu ra
1
2
Test
Với Java 9, chúng ta có thể sử dụng toán tử <> với lớp ẩn danh như hình bên dưới.
Tester.java
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.handle();
}
}
abstract class Handler<T> {
public T content;
public Handler(T content) {
this.content = content;
}
abstract void handle();
}
Đầu ra
1
2
Test