Идентификация класса, расширяющего абстрактный класс - PullRequest
0 голосов
/ 06 мая 2010

Добрый вечер,

Я занимаюсь рефакторингом http://wiki2xhtml.sourceforge.net/, чтобы наконец получить лучший обзор и удобство обслуживания. (Я начал проект, когда решил заняться программированием, так что - вы поняли, верно?;))

Сейчас мне интересно, как решить проблему, которую я сейчас опишу:

Каждый файл будет пропущен через несколько парсеров (например, один для ссылок, один для таблиц, один для изображений и т.

public class WikiLinks extends WikiTask { ... }
public class WikiTables extends WikiTask { ... }

Затем файлы будут проанализированы следующим образом:

public class WikiFile {
...
public void parse() {
    //Run all parsers on this file.
    if (!parse) return;
    WikiTask task = new WikiLinks();
    do {
        task.parse(this);
    } while ((task = task.nextTask()) != null);
}
}

Иногда я могу захотеть вообще не использовать анализатор (для файлов, которые нужно только скопировать) или только выбранный (например, для целей тестирования). Поэтому перед запуском task.parse () мне нужно проверить, действительно ли этот определенный синтаксический анализатор необходим / желателен. (Возможно, через черный или белый список.)

Что бы вы предложили для сравнения? Идентификатор для каждого WikiTask (как это сделать?)? Сравнение самого объекта задачи с новым экземпляром WikiTask (накладные расходы)?

1 Ответ

0 голосов
/ 07 мая 2010

Извините, но я не совсем понимаю вашу функцию разбора. Если вы не хотите использовать парсер, установите для parse значение false? :) Если я попытаюсь угадать, что вы хотите ... Я бы просто использовал перечисление. Ваши задачи могут содержать ParserType type;, так что вы можете делать что-то. как if(task.getParserType() == this.getParserType() ) { task.parse(this) } Вам обязательно нужно использовать List, если вы хотите использовать разные парсеры для определенной задачи. Привет.

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