我正在尝试做这样的事情:
abstract class DbFinder[T <: PublicKey with Null]
Run Code Online (Sandbox Code Playgroud)
但是当我尝试将类型为T的对象返回为null时,它无法编译.以前我曾经:
abstract class DbFinder[T >: Null]
Run Code Online (Sandbox Code Playgroud)
很高兴让我回归null.
我假设我对第一行代码感到困惑.我想坚持认为T扩展了PublicKey,但T也可以为空.我该怎么做呢?
问候
我认为最好的方法是使用Option,这样你就可以使用None来模拟null传递:
abstract class DbFinder{def someMethod(a: Option[PublicKey]): Any = ...}
Run Code Online (Sandbox Code Playgroud)
在您的代码中,Null约束是多余的,因为每个Scala引用类型都继承自Null,因此您只是声明您期望一个PublicKey子类实例.
顺便说一句,你应该避免在Scala中使用null,正如我上面所说的那样.