Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

Diamond Operator กับ Anonymous Inner Class ใน Java 9

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 สะอาดขึ้น