当前位置: 首页 > 面试题库 >

如何在Java中传递Scala对象引用?

韦智刚
2023-03-14
问题内容

我想从Java方法返回对Scala对象的引用。我怎样才能做到这一点?

我的Scala对象是这样的:

trait Environment

object LocalEnvironment extends Environment {...}
object ServerEnvironment extends Environment {...}

…并且我希望我的Java方法像这样:

Environment getEnvironment() { return LocalEnvironment; }  // DOES NOT COMPILE

有没有办法做到这一点?


问题答案:
{ return LocalEnvironment$.MODULE$; }

应该管用。

编辑:之所以可行,是因为这是Scala表示单例对象的方式。该类中ObjectName$有一个名为的字段,其中MODULE$填充有该类的单个有效实例。但是还有一个叫做的类ObjectName,它将所有方法复制为静态方法。这样一来,您就可以ObjectName.methodName在大多数情况下像Java一样使用它(只需调用),Scala就有一个真正的类可以传递。

但是,当Java需要传递类时-而不是通常使用一堆静态方法(这是object在Java中设计的)来完成的,那么您必须知道Scala如何在内部表示它。



 类似资料:
  • 问题内容: 在PHP 5中,是否需要使用修饰符通过引用传递?例如, 在PHP4中,您需要使用修饰符在进行更改后保持引用,但是我对已阅读的有关PHP5自动使用传递引用的主题感到困惑,除非明确克隆对象。 在PHP5中,是否 需要通过修饰符来通过引用传递所有类型的对象(变量,类,数组等)? 问题答案: 您是否需要使用&修饰符来传递引用? 从技术上/意义上讲,即使有对象,答案也是 肯定的 。这是因为有两种

  • 问题内容: 是否可以通过Java通过引用传递对象 就像在C#中一样 问题答案: 不,这在Java中是不可能的。 在Java中,方法的所有参数均按值传递。注意非原始型的的变量,它们是对对象的引用,也由值来传递:在这种情况下, 参考 是 由值来传递 。请注意,按值传递引用与按引用传递不同。

  • 问题内容: 我有一个Scala对象,需要在Java类中使用。 这是Scala对象 如何在Java中使用此Scala对象? 到目前为止,我已经尝试了以下操作,但未成功(编译错误): //返回一个没有用的字符串,因为我想要实际的Person对象 问题答案: 编辑 :一个工作示例(我检查过,它可以编译并工作):Scala: Java对应项:

  • 我有一个scala类a,其中有一个方法。 还有一个B类

  • 问题内容: 我是一个完整的Java新手。我知道Java将所有参数都视为按值传递,并且还有其他几个线程可以解释这一点。 例如,在C ++中,我可以执行以下操作: 哪个将输出3。我知道在Java中,所有参数都是按值传递的,因此您无法操纵传入的参数。在Java中,有没有一种标准的方法来 模拟 按引用传递?有没有办法调用操作传入变量的函数?对于我来说,很难绕开没有办法做到这一点的想法。 问题答案: 模拟传

  • 问题内容: 我正在尝试将自己的自定义对象传递到包中: 我得到错误: 问题答案: 一种方法是让您的自定义对象实现Parcelable接口并使用