如何从Java访问scala包对象中包含的对象Foo? [英] How to access an object Foo contained in a scala package object from Java?

查看:87
本文介绍了如何从Java访问scala包对象中包含的对象Foo?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何从Java中访问scala包对象中包含的对象 Foo

How to access an object Foo contained in a scala package object from Java?

package object domain { object Foo }  domain$.MODULE$.Foo$.MODULE$ 


推荐答案

从Scala 2.8.1开始,这可能已经改变了,但建议的域$ Foo $ .MODULE $ 不起作用。你必须使用 domain.package $ Foo $ .MODULE $

Perhaps this has changed as of Scala 2.8.1, but the proposed domain$Foo$.MODULE$ doesn't work. You have to use domain.package$Foo$.MODULE$.

这对象有点不同,给定scala类:

And it's a little different for objects, methods, etc. Given the scala class:

package object domain {
  object foo
  def bar = 42
  val baz = 1.0
}

您可以访问 foo bar baz 在Java中如下:

You can access foo, bar and baz in Java like:

domain.package$foo$.MODULE$
domain.package$.MODULE$.bar()
domain.package$.MODULE$.baz()

虽然我想弄明白这一点,但我以为我们在麻烦,因为Scala生成了一个名为 package 的类,当然你无法用Java导入。幸运的是,我们只需要包$ 随附对象,您可以将其导入。

While I was trying to figure this out, I thought we were in trouble because Scala generates a class named package, which of course you can't import in Java. Fortunately, we only need the package$ companion object, which you can import.

这篇关于如何从Java访问scala包对象中包含的对象Foo?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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