Scala编译器-Xcheck-null尝试检查运行时是否存在任何潜在的空指针取消引用.
这对我来说没问题,但是我得到了太多误报,即假设我定义了记录器:
private final val LOGGER: Logger = LoggerFactory.getLogger(classOf[GenericRestImpl])
Run Code Online (Sandbox Code Playgroud)
该方法getLogger永远不会返回null.我怎样才能将这些知识传递给编译器,这样它就不会抱怨?
[WARNING] TestImpl.scala:31: warning: potential null pointer dereference: LOGGER.debug
[WARNING] LOGGER.debug("Using {} for sort", sortParam)
Run Code Online (Sandbox Code Playgroud)
当我创建新实例时,我可以用NotNull特征标记它:
return new Foo() with NotNull.
Run Code Online (Sandbox Code Playgroud)
没关系,但是如何处理从其他方法返回的对象呢?特别是如果它来自第三方图书馆?我不喜欢将我的所有变量标记为Optional,因为它会增加太多的开销.另外,我不喜欢创建隐式转换的想法(因为对于我想要标记为NotNull的每个类,它需要额外的类.
我还检查了Scala的NotNull特征的问题库支持,但它没有帮助解决我的问题.