在java中使用来自scala包对象的val

时间:2014-10-22 20:18:35

标签: java scala package

我有一个Scala包对象,其中声明了vals。所以我可以在没有每次导入所有对象的情况下使用公共对象。

但是,我也想在Java中使用这些定义,但Java不允许导入任何名为' package'这是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());
  }
}

1 个答案:

答案 0 :(得分:5)

试试这个

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());
    }
}