saroff
@saroff
Enterprise Java Developer

Как правильно организовать приведение типов при работе с generic стеком?

Я делаю парсер и у меня есть такая ситуация:
Есть единый суперкласс 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;
}
  • Вопрос задан
  • 225 просмотров
Пригласить эксперта
Ответы на вопрос 1
@bromzh
Drugs-driven development
В рантайме твой параметризированный тип заменяется на Object. Последний код окажется просто бессмысленным. Ещё и instanceof.
Тип приводи в момент получения:
MyClass a = (MyClass) stack.pop();
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы