相关疑难解决方法(0)

如何将特征混合到实例中?

鉴于一个特点MyTrait:

trait MyTrait {
  def doSomething = println("boo")
}
Run Code Online (Sandbox Code Playgroud)

它可以与extendsor 混合成一个类with:

class MyClass extends MyTrait
Run Code Online (Sandbox Code Playgroud)

它也可以在实例化一个新实例时混合:

var o = new MyOtherClass with MyTrait
o.doSomething
Run Code Online (Sandbox Code Playgroud)

但是......可以将特征(或任何其他如果产生影响的特征)添加到现有实例中吗?

我在Java中使用JPA加载对象,我想使用traits为它们添加一些功能.有可能吗?

我希望能够按如下方式混合特征:

var o = DBHelper.loadMyEntityFromDB(primaryKey);
o = o with MyTrait //adding trait here, rather than during construction
o.doSomething
Run Code Online (Sandbox Code Playgroud)

scala traits

47
推荐指数
3
解决办法
2万
查看次数

标签 统计

scala ×1

traits ×1