我希望能够声明如下内容:
trait Narrowable[A] extends Iterable[A] {
def narrow[B <: A & B <: AnyRef] : Iterable[B]
}
对此,类型B
应同时是A
和 的子类型AnyRef
。这可能吗?
我希望能够声明如下内容:
trait Narrowable[A] extends Iterable[A] {
def narrow[B <: A & B <: AnyRef] : Iterable[B]
}
对此,类型B
应同时是A
和 的子类型AnyRef
。这可能吗?
Answers:
使用化合物类型:
trait Narrowable[A] extends Iterable[A] {
def narrow[B <: A with AnyRef] : Iterable[B]
}
def narrow[B <: A | B <: AnyRef] : Iterable[B]
Either[A, AnyRef]
而不是键入边界。