Can I use scala List directly in Java?

Могу ли я использовать Scala List в Java, например:

import scala.collection.immutable.List;
class HelloScalaList {
    public static void main (String[] args) {
        List xs = List(1, 2, 3);
        System.out.println(xs);
    }
}

Кажется, он не компилируется. не удается найти метод List $ .apply.

когда я меняю его на

List xs = Dir.ls()

, где Dir - мой класс scala, а ls () возвращает список scala, компилятор жалуется на

«Внутренняя ошибка компилятора: java .lang.ClassCastException: org.eclipse.jdt.internal.compiler.lookup.BaseTypeBinding нельзя преобразовать в org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding в org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.initializeTypeVariable (BinaryTypeBinding.java:927) "

что я понятия не имею, что это значит.


Я хочу написать некоторую библиотеку на scala, но также хотелось бы, чтобы он использовался в Java.

В моем классе scala есть методы, которые возвращают список scala, для того чтобы использовать их в java-коде, у меня есть два варианта:

  1. использовать scala List в java напрямую

  2. написать оболочку класс, который возвращает java.util.List для этих методов.

Я бы предпочел вариант 1, потому что в противном случае мне придется написать класс-оболочку почти для ВСЕХ моих классов scala.

Но я просто не могу получить список scala, работающий в Java.

14
задан om-nom-nom 31 July 2014 в 10:24
поделиться