如何在java中访问scala类中的scala对象?
我有一个scala类,比如:如何在java中访问scala类中的scala对象?,java,scala,scala-java-interop,Java,Scala,Scala Java Interop,我有一个scala类,比如: class A { object B { def c(d: Int) = d + 4 } } 如何从java代码访问函数c 编辑:假设我无论如何都不能更改scala类 编辑2: 下面是一个例子 public class Q { public void qwe() { A a = new A(); a.B().c(4); //Cannot resolve method 'B' in 'A' } } 类
class A {
object B {
def c(d: Int) = d + 4
}
}
如何从java代码访问函数c
编辑:假设我无论如何都不能更改scala类
编辑2:
下面是一个例子
public class Q {
public void qwe() {
A a = new A();
a.B().c(4); //Cannot resolve method 'B' in 'A'
}
}
类中的对象B转换为公共方法B,您可以按如下方式访问该方法:
A=新的A;
System.out.printlna.B.c4;
幕后
斯卡拉
甲级{
对象B{
def cd:Int=d+4
}
}
当编译成java时,上面的类如下所示
斯卡拉
javap-pa.class
公共A类{
私有易失性A$B$B$模块;
公共A$B$B;
私人最终无效B$lzycompute$1;
公共A;
}
类中的对象B转换为公共方法B,您可以按如下方式访问该方法:
A=新的A;
System.out.printlna.B.c4;
幕后
斯卡拉
甲级{
对象B{
def cd:Int=d+4
}
}
当编译成java时,上面的类如下所示
斯卡拉
javap-pa.class
公共A类{
私有易失性A$B$B$模块;
公共A$B$B;
私人最终无效B$lzycompute$1;
公共A;
}
这在思想上是行不通的。当我试图编译它时,Gradle也会抛出错误。下面是java类``public class Q{public void qwe{A A A=new A;A.B.d4;}}}}``的示例,Idea不理解,可能是intellij的bug。您仍然可以运行,并且应该打印8。这在idea中不起作用。当我试图编译它时,Gradle也会抛出错误。下面是java类``public class Q{public void qwe{A A A=new A;A.B.d4;}}}}``的示例,Idea不理解,可能是intellij的bug。您仍然可以运行,并且应该打印8