在Java中使用Scala包对象中的vals [英] Using vals from scala package object in java

查看:127
本文介绍了在Java中使用Scala包对象中的vals的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have a Scala package object with vals declared in it. So I can use common objects without each time importing all of them.

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

However, I'd like to use these definitions in Java also, however Java does not allow importing of anything called 'package' which is the name of the class created by Scala.

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

Is there a way around this, that I can have these package objects and import them into Java

更新 遵循了公认的解决方案.但是,为可读性添加了一个中间类:

Update Followed the accepted solution. However, added an intermediate class for readability:

package.scala:

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

推荐答案

尝试一下

ex.scala.package.scala:

ex.scala.package.scala:

package ex

package object scala {
  def one = 1
}

ex.java.Test.java:

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

这篇关于在Java中使用Scala包对象中的vals的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆