在java中,我们可以有一个以Class作为参数的方法,例如:
void someMethod(Class className)
{
System.out.println(className);
}
同样,scala中有没有一种方法可以不使用Class来将Trait作为参数?
最佳答案
如果你能做到这一点,你会如何使用它?
Scala 特征被编译为接口(interface)和相应的类。您可以将接口(interface)传递给方法(因为接口(interface)是一种类):
scala> trait Foo
scala> val c: Class = classOf[Foo]
a: Class[Foo] = interface Foo
scala> def someMethod(c: Class[_]) = c.getName
scala> someMethod(a)
res1: String = Foo
类部分被编译到隐藏的 Foo$class
类文件中。但是,您可以将实现您的 Trait 的类传递到方法中。由于分为底层 Java 类和接口(interface),我不知道直接传递 Trait 的方法。
另请参阅this answer和 this one
关于Scala - 将 Trait 类型作为方法参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20713535/