Почему нулевое значение соответствует шаблону записи? ⇐ JAVA
-
Гость
Почему нулевое значение соответствует шаблону записи?
Я пробовал примеры сопоставления шаблонов с шаблонами записей в Java 21. Официальная документация утверждает, что нулевое значение не соответствует ни одному шаблону записи. Однако я попробую этот пример:
record Point(Целое число x, Целое число y) {} общественный класс MainPatternMatchingRecord { public static void main(String[] args) { printSum (новая точка (ноль, 2)); } Private static void printSum (Object obj) { if (obj instanceof Point(var x, var y)) { System.out.println(x + 1); } } } Здесь, в моем понимании JEP, new Point(null, 2) не должен совпадать с instanceof Point(var x, var y) Но при запуске программы выбросил это исключение:
Исключение в потоке «main» java.lang.NullPointerException: невозможно вызвать «java.lang.Integer.intValue()», поскольку «x» имеет значение null Почему происходит такое поведение? Как правильно интерпретировать, что нулевое значение не соответствует ни одному шаблону записи?
Я пробовал примеры сопоставления шаблонов с шаблонами записей в Java 21. Официальная документация утверждает, что нулевое значение не соответствует ни одному шаблону записи. Однако я попробую этот пример:
record Point(Целое число x, Целое число y) {} общественный класс MainPatternMatchingRecord { public static void main(String[] args) { printSum (новая точка (ноль, 2)); } Private static void printSum (Object obj) { if (obj instanceof Point(var x, var y)) { System.out.println(x + 1); } } } Здесь, в моем понимании JEP, new Point(null, 2) не должен совпадать с instanceof Point(var x, var y) Но при запуске программы выбросил это исключение:
Исключение в потоке «main» java.lang.NullPointerException: невозможно вызвать «java.lang.Integer.intValue()», поскольку «x» имеет значение null Почему происходит такое поведение? Как правильно интерпретировать, что нулевое значение не соответствует ни одному шаблону записи?
Мобильная версия