पाठ 5 / 38

रिकॉर्ड, सील्ड टाइप व पैटर्न मैचिंग

records से संक्षिप्त अपरिवर्तनीय डेटा वाहक लिखें, sealed से टाइप पदानुक्रम बंद करें, और उन्हें पूर्ण switch पैटर्न मैचिंग में destructure करें।

रिकॉर्ड

record कैनोनिकल कंस्ट्रक्टर, फ़ाइनल फ़ील्ड, एक्सेसर, equals, hashCode, toString बनाता है — अपरिवर्तनीय वैल्यू ऑब्जेक्ट के लिए।

record Point(int x, int y) {
    Point {                       // compact constructor: validation
        if (x < 0 || y < 0) throw new IllegalArgumentException();
    }
}
var p = new Point(3, 4);
p.x();   // 3

sealed + switch पैटर्न

sealed इंटरफ़ेस अपने अनुमत इम्प्लीमेंटेशन सूचीबद्ध करता है, इसलिए switch बिना default के पूर्ण हो सकता है।

sealed interface Shape permits Circle, Rect {}
record Circle(double r) implements Shape {}
record Rect(double w, double h) implements Shape {}

double area(Shape s) {
    return switch (s) {
        case Circle(double r) -> Math.PI * r * r;
        case Rect(double w, double h) -> w * h;
    };
}