在Java中使用Scala包对象中的vals

dst*_*bbe 4 java scala package

我有一个Scala包对象,其中声明了vals。因此,我可以使用公共对象,而不必每次都导入它们。

但是,我也想在Java中使用这些定义,但是Java不允许导入任何名为“ package”的东西,这是Scala创建的类的名称。

有没有办法解决这个问题,我可以拥有这些包对象并将其导入Java

更新 遵循已接受的解决方案。但是,为可读性添加了一个中间类:

package.scala:

package nl.mysoft.scalapackage

package object easy {
  val one = 1
}
Run Code Online (Sandbox Code Playgroud)

中级班:

package nl.mysoft.javapackage;

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

public class EasyE {
  public static final package$ e = package$.MODULE$;
}
Run Code Online (Sandbox Code Playgroud)

和用法:

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());
  }
}
Run Code Online (Sandbox Code Playgroud)

Ser*_*tin 6

尝试这个

ex.scala.package.scala:

package ex

package object scala {
  def one = 1
}
Run Code Online (Sandbox Code Playgroud)

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());
    }
}
Run Code Online (Sandbox Code Playgroud)