Я делаю парсер и у меня есть такая ситуация:
Есть единый суперкласс Node для всех нод дерева разбора.
Парсер в ходе своей работы использует стек, тип значений которые хранятся в нем естесно Node.
Внимание вопрос, на каком этапе лучше производить приведение типов? Потому что, если у нас есть например такая нода:
class AssignNode extends Node {
private VarNode left;
private ExpressionNode right;
//Конструктор и геттеры сеттеры
На каком этапе лучше приводить типы? Сразу после получения из стека, перед передачей в конструктор, или сделать параметры конструктора типа Node и приводить типы уже внутри него?
З.Ы. Была еще нездоровая идея сделать метод pop() параметризированным и приводить типы внутри него, ну типа
private <T extends Node> T pop() {
Node element = ...
if (element instanceof T) return (T) element;
}