У меня есть проект scala, который генерирует банку. Я пытаюсь использовать банку в проекте Java. Странно, что сигнатуры метода теряют информацию о типовом типе, когда они скомпилированы в файлы .class.Scala Removing Generic Type Information
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 я должен использовать List<Object>
вместо List<Long>
, как я хочу. Конечно, я могу бросить его, но мне бы этого не хотелось. Есть идеи?
Я использую SCALA версию 2.11.7
О, конечно! Спасибо! – Tim
Это хорошая идея рассмотреть возможность использования 'Array [Long]', поскольку это будет переведено на 'long []' в Java. Конечно, это не всегда возможно, но это делает стороны Java и Scala сторонными, выглядящими хорошими и без уродливых подписей – Archeg