在 Scala 中,动态实例化对象并使用反射调用方法的最佳方法是什么?
我想做以下Java代码的Scala等价物:
Class class = Class.forName("Foo");
Object foo = class.newInstance();
Method method = class.getMethod("hello", null);
method.invoke(foo, null);
在上面的代码中,类名和方法名都是动态传入的。上面的 Java 机制可能可以用于Foo
and hello()
,但是 Scala 类型与 Java 的类型不是一一对应的。例如,可以为单例对象隐式声明一个类。Scala 方法也允许使用各种符号作为它的名称。两者都通过名称修饰来解决。请参阅Java 和 Scala 之间的互操作。
另一个问题似乎是通过解决重载和自动装箱来匹配参数,在Reflection from Scala - Heaven and Hell中有描述。