Pattern matching в instanceof в Java
В современных версия Java оператор instanceof умеет
не только проверять тип, но и сразу вводить переменную
с уже суженным типом. Это избавляет от лишнего приведения
внутри ветки if.
Проверка и объявление переменной в одном условии:
class Post {
}
class Article extends Post {
public int getViews() {
return 10;
}
}
Создадим Article и прочитаем просмотры через шаблон
instanceof:
Post post = new Article();
if (post instanceof Article article) {
System.out.println(article.getViews());
}
Если проверка не прошла, переменная из образца недоступна.
Для родительской ссылки на Post ветка с
Article не выполнится:
public class Main {
public static void main(String[] args) {
Post post = new Post();
if (post instanceof Article article) {
System.out.println(article.getViews());
} else {
System.out.println("not an article");
}
}
}
Напишите метод, который принимает
User и выводит зарплату,
если аргумент - объект Employee.
Используйте сопоставление с образцом
в instanceof.