我正在尝试做这样的事情:
abstract class DbFinder[T <: PublicKey with Null]
但是当我尝试将类型为T的对象返回为null时,它无法编译。以前我曾经:
abstract class DbFinder[T >: Null]
我很高兴让我返回null。
我认为我对第一行代码感到困惑。我想坚持认为T扩展了PublicKey,但T也可以为空。我该怎么做?
此致
答案 0 :(得分:6)
我认为最好的方法是使用Option,这样你就可以使用None来模拟null传递:
abstract class DbFinder{def someMethod(a: Option[PublicKey]): Any = ...}
在您的代码中,Null约束是多余的,因为每个Scala引用类型都继承自Null,因此您只是声明您期望一个PublicKey子类实例。
顺便说一句,你应该避免在Scala中使用null,如上所述。
答案 1 :(得分:2)
像这样:
abstract class DbFinder[T >: Null <: PublicKey]
使用Null
作为上限无济于事,因为Nothing
是默认下限,而Nothing
不能是null
。