Использование vals из объекта пакета Scala в Java

1

У меня есть объект пакета Scala с объявленными в нем vals. Поэтому я могу использовать общие объекты, не каждый раз импортируя их все.

Тем не менее, я хотел бы использовать эти определения в Java также, однако Java не позволяет импортировать что-либо называемое "пакетом", которое является именем класса, созданного Scala.

Есть ли способ обойти это, что я могу иметь эти объекты пакета и импортировать их в Java

Обновление. Следующее принятое решение. Однако для удобства чтения добавлен промежуточный класс:

package.scala:

package nl.mysoft.scalapackage

package object easy {
  val one = 1
}

Промежуточный класс:

package nl.mysoft.javapackage;

import nl.mysoft.scalapackage.easy.package$;'

public class EasyE {
  public static final package$ e = package$.MODULE$;
}

И использование:

package nl.mysoft.javapackage.usage;

import static nl.mysoft.javapackage.EasyE.e;

public class EasyTest {
  public static void main(String[] args) {
    System.out.println(e.one());
  }
}
  • 0
    Я пытаюсь что-то подобное, но в моем случае это не val, а объект. Как получить к нему доступ, вы можете мне помочь? Пытался использовать ваш пример, но он не работает.
Теги:
package

1 ответ

3
Лучший ответ

Попробуй это

ex.scala.package.scala:

package ex

package object scala {
  def one = 1
}

ex.java.Test.java:

package ex.java;

import ex.scala.package$;

public class Test {
    public static void main(String[] args) {
        System.out.println(package$.MODULE$.one());
    }
}
  • 0
    Это было то, что я искал :)
  • 0
    спасибо товарищ :-) Даже я столкнулся с этой проблемой

Ещё вопросы

Сообщество Overcoder
Наверх
Меню