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

标签 scala

在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 answerthis one

关于Scala - 将 Trait 类型作为方法参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20713535/

相关文章:

scala - 在您选择的 Scala 编辑器中,⇒ 的键盘快捷键是什么?

scala - IntelliJ 14 - 创建/导入 Scala/SBT 项目

Scala 不处理 ':' 函数的非显式类型闭包

scala - 继承和自递归类型推断

java - 从 Java 并发迁移到 Scala 并发

Scala while 循环一直返回 Unit

java - IO/网络绑定(bind) Fork/Join-Tasks

algorithm - 在 Scala 中覆盖函数推送

Java API 无法识别方法

java - 找不到类型[简单类型,类定义]的合适构造函数