我正在将应用程序从java迁移到Scala.在java中我有点喜欢
abstract class CommonObjectInfo{//...}
class ConcreteObject extends CommonObjectInfo{//...}
abstract class AbstractWrapper<E extends CommonObjectInfo>{//...}
class ConcreteWrapper extends CommonObjectInfo<ConcreteObject>{//...}
Run Code Online (Sandbox Code Playgroud)
我如何正式表达Scala中的"包装器"对象?一世
abstract class CommonObjectInfo
class ConcreteObject extends CommonObjectInfo
abstract class AbstractWrapper[E <: CommonObjectInfo]
class ConcreteWrapper extends AbstractWrapper[ConcreteObject]
Run Code Online (Sandbox Code Playgroud)
通常的解决方案是来自agilesteel的解决方案,但有时将类型信息"拉入"类内部是有用的(特别是当有问题的类型被认为是实现细节时):
abstract class CommonObjectInfo
class ConcreteObject extends CommonObjectInfo
abstract class AbstractWrapper{
type objectInfo <: CommonObjectInfo
}
class ConcreteWrapper {
type objectInfo = ConcreteObject
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4493 次 |
| 最近记录: |