Scala - 将Trait类型作为方法参数传递

时间:2013-12-20 23:25:50

标签: scala

在java中,我们可以有一个将Class作为参数的方法,例如:

void someMethod(Class className)
{
   System.out.println(className);
}

类似地,scala中有一种方法可以将Trait作为参数而不是Class吗?

1 个答案:

答案 0 :(得分:4)

如果你能这样做,你将如何使用它?

Scala特征被编译成接口和相应的类。您可以将接口传递给方法(因为接口是一种类):

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类和接口,我不知道直接传递Trait的方法。

另请参阅this answerthis one