Java 21 Rekordmuster verspricht die Einführung von Zerstörungen in die Java -Sprache. Es scheint jedoch eng mit dem Musteranpassung gekoppelt zu sein, der nur als Teil des Vergleichs von oder in Switch Anweisungen/Ausdrücke verwendet werden kann.
Betrachten Sie den folgenden Datensatz.
Code: Select all
public record Point(int x, int y) {}
Gibt es eine Möglichkeit, ein Objekt dieses bestimmten Typs zu zerstören, ohne Instanz von oder Switch zu verwenden? Die folgenden Versuche machen Destructure Point . Der Code ist jedoch wenig sinnvoll, da weder Instanzen von noch Switch erforderlich sind, wenn wir Null-Safety annehmen.
Code: Select all
Point point = new Point(0, 0);
// destructuring with instanceof
if (point instanceof Point(int x, int y)) {
System.out.printf("Point at (%d,%d)", x, y);
}
// destructuring with switch
switch (point) {
case Point(int x, int y) -> System.out.printf("Point at (%d,%d)", x, y);
}