我正在将应用程序从java迁移到Scala。 在java中我有类似
的东西abstract class CommonObjectInfo{//...}
class ConcreteObject extends CommonObjectInfo{//...}
abstract class AbstractWrapper<E extends CommonObjectInfo>{//...}
class ConcreteWrapper extends CommonObjectInfo<ConcreteObject>{//...}
如何在Scala中正式表达“包装”对象?我
答案 0 :(得分:9)
abstract class CommonObjectInfo
class ConcreteObject extends CommonObjectInfo
abstract class AbstractWrapper[E <: CommonObjectInfo]
class ConcreteWrapper extends AbstractWrapper[ConcreteObject]
答案 1 :(得分:5)
通常的解决方案是来自agilesteel的解决方案,但有时将类型信息“拉入”类内部是有用的(特别是当有问题的类型被认为是实现细节时):
abstract class CommonObjectInfo
class ConcreteObject extends CommonObjectInfo
abstract class AbstractWrapper{
type objectInfo <: CommonObjectInfo
}
class ConcreteWrapper {
type objectInfo = ConcreteObject
}