2017-01-08 4 views
1

ソース生成ツール()を使用してプロジェクト用のJavaソースファイルを生成しています。しかし、私はKotlinのコードのすべてではないにしても、ほとんどを書いています。生成されたJavaソースのNULL可能性の注釈(Kotlinの場合)

コトルはすでにgreat Java interopを提供していますので、生成されたソースを使用することは問題ありません。しかし、どのようにKotlin brings Java's nullable types into a null-safe systemのために、私はKotlinを使用してnullの安全性のほとんどを失う。最善の方法では、プラットフォームタイプの警告があります(微妙なバグを避けるために型を明示してください)。最悪の場合、予期しないクラッシュや微妙なバグがあります。

Kotlinは、しかし、適切な非ヌルタイプまたはオプションとしてそれらを持ち込み、そのようなJSR-305、FindBugsの、ロンボク、エクリプス、及び@Nullable/@NonNullのジェットブレーンズのそれぞれの形態として、nullability annotationsを尊重しません。

コードが生成され、ソースへのアクセス権があり(どのように動作するのか理解しているので)、どの関数がnullを返すことができないかを知っていて、それらを注釈して、コード。ただし、注釈はビルドステップ中に生成され、手動による変更を上書きするため、注釈をコードに直接追加することはできません。

null安全なコードで使用する目的で、生成されたJavaソースのNULL可能性を注釈する最良の方法は/可能ですか?

答えて

2

ソースコードジェネレータに、必要なアノテーションが含まれるように変更することをお勧めします。

ジェネレータを変更できない場合(ジェネレータが独自のもので、ソースコードを持たないなど)、バイトコードエンジニアリングを使用してこれを行うことができます。もちろん

、あなたはツール(発電機、バイトコードの書き換えを指示するいくつかの方法が必要になり、いずれの場合には:たとえば、ASMサイトのこのページには、それを行うための一つの方法を提供します、何でも)どのメソッドに注釈を付けるべきかを指定します。

関連する問題