Ich möchte alle Fallklassen auflisten, die ein bestimmtes Merkmal implementiert. Ich verwende derzeit Clapper ClassUtil dafür. Ich bin in der Lage, Fallklassen zu erhalten, die ein Merkmal direkt implementieren. Ich bin jedoch nicht in der Lage, die anderen Klassen zu bekommen, die das Merkmal nicht direkt implementieren. Wie bekomme ich alle Klassen, die direkt oder indirekt ein Merkmal implementieren? ?Holen Sie alle Klassen, die ein Merkmal in Scala implementiert mit Reflexion
val finder = ClassFinder()
finder.getClasses().filter(_.isConcrete).filter(_.implements("com.myapp.MyTrait"))
Scala Version: 2.11
Clapper Klasse Util Version: 1.0.6
Gibt es irgendeine andere Weise, die ich diese Informationen bekommen? Kann mir jemand in die richtige Richtung zeigen? Ich versuchte mit scala.reflect
aber konnte nicht verstehen, wie man die Informationen bekommt.
EDIT:
Probeneigenschaften und Verwendungen:
trait BaseEntity
trait NamedEntity{ val name:String}
trait MasterDataEntity extends NamedEntity
case class Department(id:Long, override val name:String) extends MasterDataEntity
case class Employee(id:Long, name:String) extends BaseEntity
case class User(id:Long, override val name:String) extends NamedEntity
Nun, wenn ich die Eigenschaft als NamedEntity
geben, sollte ich in der Lage sein, sowohl Department
und User
zu bekommen, da sie beide direkt oder indirekt NamedEntity implementieren. Mit implements
Methode wird es nur Benutzer geben. Ich habe auch versucht, mit interfaces
Methode, die auch nur die direkten Super-Klassen bieten wird.
Könnten Sie drei Merkmale/Klassen und ihre Beziehung definieren, um das Problem zu demonstrieren? –
Ich habe die Beispielmerkmale und Fallklassenverwendungen hinzugefügt. –