У меня есть один такой главный класс:
class Test {
def exe(first:String, second:String, task:String):String = {
task match {
case "A" => {
val obj = new A(first)
obj.defineSecond(second)
}
case "B" => {
val obj = new B(first)
obj.defineSecond(second)
}
case "C" => {
val obj = new C(first)
obj.defineSecond(second)
}
....so many cases
}
}
}
Вместо того, чтобы писать case в моем тестовом классе каждый раз, когда добавляется новый класс, я пробовал использовать концепцию отражения в scala. Вот что я пробую:
val m = ru.runtimeMirror(getClass.getClassLoader)
val classTest = ru.typeOf[Test].typeSymbol.asClass
val cm = m.reflectClass(classTest)
Но возникает ошибка, так как class Test является внутренним классом, используйте RefleClass в InstaneMirror, чтобы получить его classMirror.
Может ли кто-нибудь знать, как я могу избежать добавления кейсов в мой основной класс каждый раз, когда создается новый класс, вместо этого я могу написать свой основной класс таким образом, чтобы он работал для каждого случая.