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

Source: https://www.geekswithgeeks.com/hi/advanced-java/adv-records-sealed

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

## रिकॉर्ड

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

```java
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` के पूर्ण हो सकता है।

```java
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;
    };
}
```
