Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Generics Scala中的有界泛型(如Java中的<;E扩展MyClass>;)_Generics_Scala - Fatal编程技术网

Generics Scala中的有界泛型(如Java中的<;E扩展MyClass>;)

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&

我正在将一个应用程序从java迁移到Scala。 在java中,我有一些

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 
}