В 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 позволяет использовать все виды символов. Оба разрешаются путем изменения имени. См. Взаимодействие между Java и Scala.
Другой проблемой является сопоставление параметров путем разрешения перегрузок и автобоксинга, описанных в Reflection from Scala - Heaven and Hell.