Diamond Operator กับ Anonymous Class
ตั้งแต่ Java 9 ใช้ diamond operator (<>) กับ anonymous inner class ได้แล้ว
พื้นหลัง
- Diamond operator (<>): Java 7 ใช้กับ normal classes เพื่อลด generic type ซ้ำทางขวา
- Java 7/8: ห้าม ใช้กับ anonymous inner class (compile error)
- Java 9+: อนุญาต ใช้กับ anonymous inner class
ตัวอย่าง
import java.util.*;
public class DiamondOperatorTest {
public static void main(String args[]) {
String[] str = {"Raja", "Adithya", "Jai", "Chaitanya", "Vamsi"};
// Anonymous inner class กับ diamond operator
Iterator<String> itr = new Iterator<>() {
int i = 0;
public boolean hasNext() {
return i < str.length;
}
public String next() {
if (!hasNext()) throw new NoSuchElementException();
return str[i++];
}
};
while (itr.hasNext()) {
System.out.println(itr.next());
}
}
}
Output
Raja Adithya Jai Chaitanya Vamsi
ประโยชน์
- ลด redundant generic type declarations
- โค้ดอ่านง่ายขึ้น
- สอดคล้องกับการใช้ diamond operator ใน normal classes
สรุป
Java 9 แก้ไขข้อจำกัด diamond operator ให้ใช้กับ anonymous inner classes ได้ ทำให้โค้ด generic สะอาดขึ้น