有没有一种方法可以在scala中“编程接口”

时间:2018-08-17 15:28:36

标签: scala traits

是否可以在Scala中“编程接口”?

我是Scala的新手。我在scala中拥有一个“特质”,并且有许多类扩展了该特质。我正在寻找一种方法来直接使用接口而不是直接使用类。

当前,我正在执行

val clazz = new MyClass() 

MyClass是从特征扩展而成的。

我正在寻找一种方法来将接口作为工厂数学方法的实例返回以生成类。有办法吗?

1 个答案:

答案 0 :(得分:1)

您始终可以只请求接口类型:

val clazz: MyInterf = new MyClass()

如果您真的想隐藏实现,一种方法是为特征创建一个伴侣:

trait MyInterf {
  ...
}

class MyClass extends MyInterf {
  ...
}

object MyInterf {
  def create: MyIntef = new MyClass()
}

// calling code
val impl = MyInterf.create