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