我正在编写一个程序,并且需要获取包中的所有类,并且需要返回它们的对象。
我有这段代码:
package object cards {
private val reflections: Reflections = new Reflections(
new ConfigurationBuilder()
.setUrls(ClasspathHelper.forPackage("me.mysterymystery.duelingfactions.apiv2.guiindependant.card.cards"))
.setScanners(new SubTypesScanner())
)
def getAllCards: Seq[Card] = reflections.getSubTypesOf(classOf[Card]).asScala.map(_.newInstance()).toSeq
...
}
卡类是:
trait Card {}
trait MonsterCard extends Card {}
然后所有牌都从这个特征延伸出来,例如:
class ExampleCard extends MonsterCard
他们没有构造函数。 所有卡都在同一个包中。
但是得到java.lang.NoSuchMethodException: me.mysterymystery.duelingfactions.apiv2.guiindependant.card.MonsterCard.<init>()
有没有人对为什么以及如何解决这个问题有任何想法?
答案 0 :(得分:0)
MonsterCard是trait
,不是class
,无法实例化。您需要添加一些过滤,以便只获取具有适当构造函数的具体类的类型。