Scala Reflection - Laden oder Finden von Klassen anhand von Merkmalen

Bietet die Scala Reflection API (2.10) eine einfachere Möglichkeit, die geladenen Klassen zu durchsuchen und die Liste nach bestimmten Klassen zu filtern, die ein definiertes Merkmal implementieren? dh;

trait Widget {
  def turn(): Int
}

class Cog extends Widget {
  def turn() = {
    5
  }
}

class Sprocket extends Widget {
  def turn() = {
   10
  }
}

Ich möchte die Klassenbibliothek nach allem durchsuchen, was Widget erweitert, und diese Klassen instanziieren. So würde ich mit einer Instanz von endenCog undSprocket.

Ich habe in Java ähnliche Schritte ausgeführt, indem ich die Klassenverzeichnisse durchlaufen habe, Klassennamen gebildet und mit Class.forName ein Class-Objekt geladen habe, um es dann zu überprüfen. Ich frage mich nur, ob die Scala Reflection-API die Suche einfacher macht. Alle Beispiele, die ich bisher gesehen habe, sind immer von einer bekannten Klasse ausgegangen, die instanziiert wurde, und nicht von der Suche nach verfügbaren Klassen.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage