Holen Sie sich alle Unterklassen deklariert, die zur Laufzeit in Java?

Sagen wir, ich habe ein Paket, das enthält alle Unterklassen von 'Gerät', wie dieser:

class TV extends Device{

   @override
   public void run() {
       //code goes here
   }

   private void moreMethods(String args){
       //more code
   }

}

In der main-Klasse sollte es möglich sein, zu instanziieren und ausführen von jeder Unterklasse des Geräts zur Laufzeit durch den Aufruf alle 'run' - Methode.

Der Vorteil davon ist, um Benutzern zu erlauben, setzen Sie einfach neue Gerät Dateien in das Paket und sagte-Dateien automatisch laufen, ohne zu müssen, Bearbeiten Sie die main-Klasse.

Ist es eine saubere Art und Weise, dies zu tun? Ich dachte, dass vielleicht, wenn ich hatte eine txt-Datei in das Paket mit jeder Unterklasse Namen, es wäre möglich. Geringfügige Unannehmlichkeiten für die Benutzer Bearbeiten die Datei und fügen Sie das neue Gerät den Namen.

Gibt es einen anderen Weg das gleiche Ergebnis zu erzielen? Ich bin daran interessiert, die Bereitstellung einer Möglichkeit für Benutzer, um neues Gerät hinzufügen-Dateien ohne Bearbeitung existierender code.

  • Habe ich nicht getestet, aber code.google.com/p/reflections scheint vielversprechend.
  • Sie suchen nach einem classpath-scanner, mehrere vorhanden.
  • Möchten Sie vielleicht ein SPI.
InformationsquelleAutor user1378063 | 2015-04-13
Schreibe einen Kommentar