如何在 java 中访问 Scala class 中的 Scala 对象?

How to access scala object inside scala class in java?

我有 scala class 比如:

class A {
  object B {
    def c(d: Int) = d + 4
  }
}

如何从 java 代码访问函数 c

编辑:假设我无法更改 scala class。

编辑#2: 这是

的例子
public class Q {
    public void qwe() {
        A a = new A();
        a.B().c(4); //Cannot resolve method 'B' in 'A'
    }
}

object B 从 class 转换为 public 方法 B(),您可以按如下方式访问:

  A a = new A();
  System.out.println(a.B().c(4));

引擎盖下

A.scala

class A {
  object B {
    def c(d: Int) = d + 4
  }
}

以上 class 编译为 java 如下所示

scalac A.scala
javap -p A.class
public class A {
  private volatile A$B$ B$module;
  public A$B$ B();
  private final void B$lzycompute();
  public A();
}