Generics Scala中的有界泛型(如Java中的<;E扩展MyClass>;)
我正在将一个应用程序从java迁移到Scala。 在java中,我有一些Generics Scala中的有界泛型(如Java中的<;E扩展MyClass>;),generics,scala,Generics,Scala,我正在将一个应用程序从java迁移到Scala。 在java中,我有一些 abstract class CommonObjectInfo{//...} class ConcreteObject extends CommonObjectInfo{//...} abstract class AbstractWrapper<E extends CommonObjectInfo>{//...} class ConcreteWrapper extends CommonObjectInfo&
abstract class CommonObjectInfo{//...}
class ConcreteObject extends CommonObjectInfo{//...}
abstract class AbstractWrapper<E extends CommonObjectInfo>{//...}
class ConcreteWrapper extends CommonObjectInfo<ConcreteObject>{//...}
抽象类CommonObjectInfo{//…}
类ConcreteObject扩展了CommonObjectInfo{//…}
抽象类AbstractWrapper{/…}
类ConcreteWrapper扩展了CommonObjectInfo{//…}
如何在Scala中正式表示“包装器”对象?I抽象类CommonObjectInfo
abstract class CommonObjectInfo
class ConcreteObject extends CommonObjectInfo
abstract class AbstractWrapper[E <: CommonObjectInfo]
class ConcreteWrapper extends AbstractWrapper[ConcreteObject]
类ConcreteObject扩展了CommonObjectInfo
抽象类AbstractWrapper[E通常的解决方案是agilesteel提供的,但有时将类型信息“放在”类中是有用的(特别是当所讨论的类型被认为是实现细节时):
抽象类CommonObjectInfo
类ConcreteObject扩展了CommonObjectInfo
抽象类抽象包装器{
类型objectInfo
abstract class CommonObjectInfo
class ConcreteObject extends CommonObjectInfo
abstract class AbstractWrapper{
type objectInfo <: CommonObjectInfo
}
class ConcreteWrapper {
type objectInfo = ConcreteObject
}