Мне нужно динамически создать экземпляр объекта в Scala.
Имя класса передается в качестве параметра методу main.
Фактический класс, который имеет все методы, импортируется из другого пакета
Я ссылался на решения в ссылках ниже
создание экземпляра объекта с отражением с использованием аргументов конструктора
Scala: как динамически создать экземпляр объекта и вызвать метод с использованием отражения?
Мои проблемы в том, что я не могу передать параметр имени класса в asInstanceOf. Ниже приведен код.
import com.xxx.xxx.warehouse.sbi
val classParam = "sbi" //to make it easy, i hardcoded the value.
val constructor = Class.forName(classParam).getConstructors()(0)
val args = Array[AnyRef](String,String)
val instance1
=constructor.newInstance(args:_*).asInstanceOf[classParam]
Последняя строка в приведенном выше коде выдает ошибку classParam не может быть решена. asInstanceOf потребуется параметр типа T. Мой класс "sbi" имеет так много методов. Но в этом случае, как мне решить эту проблему. Есть
несколько классов, похожих на "sbi"
Что я пытаюсь решить:
У меня есть 500 классов дел для импорта из пакета com.xxx.xxx.warehouse. Давайте назовем их sbi1, sbi2, sbi3 ... sbi500. Все эти классы расширяют другой класс, который имеет несколько методов. Есть метод "getLatestVesrion", который находит последнюю версию файла S3 на основе имени класса. Каждый класс дел принимает в качестве входных данных файл S3
Мне нужно получить последнюю версию каждого файла S3 для всех 500 наборов данных в S3, используя вышеуказанные классы. Вместо явного вызова каждого класса я хочу динамически вызывать эти классы в соответствии с необходимостью. Если я вызываю их явно, мне нужно написать 2 строки кода для каждого класса. Итак, я буду передавать имя класса sbi1, sbi2, sbi3 ..sbi500 во время выполнения. В зависимости от имени класса необходимо получить последнюю версию.
Итак, технически, учитывая строку для имени класса, как я могу получить доступ к методам в этом имени класса?