В Scala, что является лучшим способом динамического создания объекта и вызова метода с использованием отражения?Scala: Как динамически создать экземпляр объекта и вызвать метод с использованием отражения?
Я хотел бы сделать Scala-эквивалент следующего кода Java:
Class class = Class.forName("Foo");
Object foo = class.newInstance();
Method method = class.getMethod("hello", null);
method.invoke(foo, null);
В приведенном выше коде, как имя класса и имя метода передаются в динамически. Вышеупомянутый механизм Java, вероятно, можно было бы использовать для Foo
и hello()
, но типы Scala не соответствуют друг другу с Java. Например, класс может быть объявлен неявно для одноэлементного объекта. Кроме того, метод Scala позволяет использовать все виды символов. Оба разрешаются путем изменения имени. См. Interop Between Java and Scala.
Другой вопрос, похоже, соответствует параметрам путем разрешения перегрузок и автобоксинга, описанных в Reflection from Scala - Heaven and Hell.
Учитывая, что экспериментальная функция в моем ответе не делал 2.8.0, было бы лучше, если бы другой ответ был отмечен как принято. –
если у меня есть класс с параметрами для класса, например класс MailServerice (emailIds: string) можно ли динамически запускать во время выполнения? – ashK