Посетитель с параметром типа, действующий на типы, не указанные в параметре типа - PullRequest
0 голосов
/ 23 июня 2019

Я использую общий абстрактный класс фреймворка AbstractProcessor<T extends CtElement>, который в основном является посетителем, который посещает все элементы T. Существует метод

public void process(T element)

, который действует на все элементы указанного типа ичто-то делает.

Затем я сам реализовал другой абстрактный класс, который добавляет пару функций к этому классу фреймворка GenerationProcessor<T extends CtElement> extends AbstractProcessor<T>.

Затем существуют конкретные реализации классов GenerationProcessor, которыеЯ создаю с помощью своего рода фабричного шаблона, удерживая список типа GenerationProcessor, чтобы затем вызвать process -метод с помощью полиморфизма.Одним из них может быть XYZProcessor<T extends CtElement> extends GenerationProcessor<T>.Когда я сейчас создаю эти конкретные процессоры и пытаюсь дать им конкретный тип (который, конечно, расширяет CtElement), чтобы шаблон посетителя посещал такие элементы, как этот new XYZProcessor<CtNamedElement>(), где CtNamedElement является подтипом CtElement, я делаюне получить ожидаемый результат.Метод process, кажется, вызывается для всех посещаемых элементов типа CtElement, а НЕ только для элементов типа CtNamedElement, как я хочу (поскольку вызов конструктора для XYZProcessor с параметром типа CtNamedElement).

Кто-нибудь знает, что здесь происходит?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...