Scala 重写抽象类型成员 抽象类框{ 键入T
,因为您有权创建交叉点Scala 重写抽象类型成员 抽象类框{ 键入T,scala,generics,Scala,Generics,,因为您有权创建交叉点 abstract class Box { type T <: String } type InvariantBox = Box { type T = AnyRef } // compiles abstract class Box2 extends Box { type T = AnyRef //Error:overriding type T in class // Box with bounds <:
abstract class Box {
type T <: String
}
type InvariantBox = Box { type T = AnyRef } // compiles
abstract class Box2 extends Box {
type T = AnyRef //Error:overriding type T in class
// Box with bounds <: String; type T
// has incompatible type type T = AnyRef
}
否则,对于任何类型的A
,B
都可以使用B创建类型A
对于类,有覆盖规则
Scala允许定义没有任何值或只有
null
值的类型。谢谢你的回答。你能给出一个用null值创建类型的例子吗?用null值创建类型我的意思是val x:InvariantBox=null
。没有其他val x:InvariantBox=newbox{type T…}
编译。在Scala规范中,在Dotty中。
type HasT = { type T = AnyRef }
type InvariantBox = Box with HasT