jar を生成する scala プロジェクトがあります。Java プロジェクトで jar を使用しようとしています。奇妙なことは、メソッド シグネチャが .class ファイルにコンパイルされるときにジェネリック型情報が失われていることです。
def foo(x:List[Long]) = ...
Lscala/collection/immutable/List<Ljava/lang/Object;>
.class ファイルでメソッドを生成します。
と同じです
def foo(x:java.util.List[Long]) = ...
.class ファイルは、メソッドの署名が
Ljava/util/List<Ljava/lang/Object;>
本当の問題は、Java プロジェクトでこの jar を使用するときに、好きなように使用するList<Object>
代わりに使用する必要がList<Long>
あることです。確かにキャストできますが、キャストする必要はありません。何か案は?
私はscalaバージョン2.11.7を使用しています