title: Identifying a class which is extending an abstract class
body: <p>Good Evening,</p>
  
  <p>I'm doing a major refactoring of <a href="http://wiki2xhtml.sourceforge.net/" rel="nofollow noreferrer">http://wiki2xhtml.sourceforge.net/</a> to finally get better overview and maintainability. (I started the project when I decided to start programming, so &ndash; you get it, right? ;))</p>
  
  <p>At the moment I wonder how to solve the problem I'll describe now:</p>
  
  <p>Every file will be put through several parsers (like one for links, one for tables, one for images, etc.):</p>
  
  <pre><code>public class WikiLinks extends WikiTask { ... }
  public class WikiTables extends WikiTask { ... }
  </code></pre>
  
  <p>The files will then be parsed about this way:</p>
  
  <pre><code>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);
  }
  }
  </code></pre>
  
  <p>Sometimes I may want to use no parser at all (for files that only need to be copied), or only a chosen one (e.g. for testing purposes). So before running task.parse() I need to check whether this certain parser is actually necessary/desired. (Perhaps via Blacklist or Whitelist.)</p>
  
  <p>What would you suggest for comparing? An ID for each WikiTask (how to do?)? Comparing the task Object itself against a new instance of a WikiTask (overhead)?</p>