Scala コンパイラには-Xcheck-null
、実行時に null ポインターの逆参照の可能性があるかどうかをチェックしようとするものがあります。
私には問題ありませんが、誤検知が多すぎます。つまり、 logger を定義するとします。
private final val LOGGER: Logger = LoggerFactory.getLogger(classOf[GenericRestImpl])
メソッドgetLogger
は を返しませんnull
。この知識をコンパイラに渡して文句を言わないようにするにはどうすればよいですか?
[WARNING] TestImpl.scala:31: warning: potential null pointer dereference: LOGGER.debug
[WARNING] LOGGER.debug("Using {} for sort", sortParam)
新しいインスタンスを作成するときに、NotNull
特性でマークできます。
return new Foo() with NotNull.
それは問題ありませんが、他のメソッドから返されたオブジェクトをどうするのでしょうか? 特にサードパーティのライブラリから来ている場合は? オーバーヘッドが大きくなりすぎるため、すべての変数をオプションとしてマークするのは好きではありません。また、暗黙的な変換を作成するという考えは好きではありません (NotNull としてマークするクラスごとに追加のクラスが必要になるため)。
また、Scala の NotNull 特性に対する質問ライブラリのサポートも確認しましたが、問題の解決には役立ちませんでした。