代码之家  ›  专栏  ›  技术社区  ›  Simon A. Eugster

识别扩展抽象类的类

  •  -1
  • Simon A. Eugster  · 技术社区  · 16 年前

    晚上好,

    我正在对 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的id(如何操作?)?将任务对象本身与wikitask的新实例进行比较(开销)?

    1 回复  |  直到 16 年前
        1
  •  0
  •   InsertNickHere    16 年前

    很抱歉,我不太了解你的解析函数。如果不想使用解析器,请将parse设置为false?:) 如果我试着猜出你想要什么…我只需要使用枚举。你的任务可以容纳 ParserType type; ,所以你可以做某事 if(task.getParserType() == this.getParserType() ) { task.parse(this) } 如果您希望某个任务使用不同的解析器,那么您肯定需要使用一个列表。当做。