Scala 从对象应用程序继承,我如何制作类似的东西?

Scala 从对象应用程序继承,我如何制作类似的东西?,scala,Scala,我有3个项目包含在一个项目中,我们称它们为project1、2和3,它们包含在主项目中。1一个是库,而两个其他的是控制台可执行项目 目前,我在项目2和3中有两个几乎相同的对象应用程序: package com.project1 abstract class Class123 extends Actor { ... } abstract class Class456 { ... } package com.project2 class Class123 extends package1.C

我有3个项目包含在一个项目中,我们称它们为
project1
2
3
,它们包含在
主项目中。
1
一个是库,而
两个
其他的是控制台可执行项目

目前,我在项目
2
3
中有两个几乎相同的
对象应用程序

package com.project1

abstract class Class123 extends Actor { ... }
abstract class Class456 { ... }

package com.project2

class Class123  extends package1.Class123 { ... }
class Class456  extends package1.Class456 { ... }

object Application extends App {
  val system = ActorSystem()
  val myActor = system.actorOf(Props[Class123])
  val b = new Class456               
  // some actions
}

package com.project3

class Class123  extends package1.Class123 { ... }
class Class456  extends package1.Class456 { ... }

object Application extends App {
  val system = ActorSystem()
  val myActor = system.actorOf(Props[Class123])
  val b = new Class456            
  // some actions
}
如何减少重复的次数?我可以在
package1
中创建
对象应用程序
,但它应该是通用的(Scala不允许这样做),我必须从中继承(Scala也不允许)


我该怎么办?

将其作为类而不是对象:

class MyApp[C123, C456] extends App {
  val system = ...
  val myActor = ...
  val b = ...            
}

package com.project1
object Application1 extends MyApp[com.project1.Class123, com.project1.Class456] { 
  ... 
}

package com.project2
object Application2 extends MyApp[com.project2.Class123, com.project2.Class456] { 
  ... 
}

您以前的回答者已经回答过,或者,您可能不知道类可以扩展应用程序(DelayedInit),而您的对象可以扩展该类。