java - 在 Eclipse 中从 Java 访问 Scala 实例变量

标签 java eclipse scala

我怀疑我一定遗漏了一些非常基本的东西,但我似乎无法从 Java 代码访问 Scala 字段:

package test;

class TestScala (myNumber : Int){
    val myNum : Int = myNumber;
}


package test;

import test.TestScala;

public class TestJava {
    public static void main(String[] args) {
        TestScala t = new TestScala(2);

        int x = t.myNum;

        System.out.println(x);      
    }
}

产量:

线程“main”中的异常 java.lang.Error: Unresolved 编译问题: 字段 TestScala.myNum 不可见

这张 Assembla 票涉及到这个主题,但我的小脑袋无法解析有用的解决方案:

http://scala-ide.assembla.com/spaces/scala-ide/tickets/1238-objects-not-visible-to-java-in-mixed-java-scala-eclipse-project

谢谢

最佳答案

通过同名方法访问 Val 字段。

scalac -Xprint:typer 会告诉你:

class TestScala extends java.lang.Object with ScalaObject {
  <paramaccessor> private[this] val myNumber: Int = _;
  def this(myNumber: Int): $iw.$iw.TestScala = {
    TestScala.super.this();
    ()
  };
  private[this] val myNum: Int = TestScala.this.myNumber;
  <stable> <accessor> def myNum: Int = TestScala.this.myNum
}

因此在 Java 中 int x = t.myNum(); 有效。

关于java - 在 Eclipse 中从 Java 访问 Scala 实例变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4119231/

相关文章:

从 Linux 到 Windows 7 上的 Visual Studio 2010 的 C 编程问题

java - 无法使用系统菜单栏 Javafx

eclipse - 如果我没有任何错误,如何删除错误 Eclipse 项目指示器?

scala - 在 Scala 中使用 def 定义字段是什么意思?

scala - 接受两个monadic值并返回一个monadic值的泛型函数

java - 如何从用户提交的页面中过滤(删除)JSP 内容

java IO将一个文件复制到另一个

scala - 如何在 Scalding 中定义源字段

java - 我的java代码有缺陷,但我不明白为什么

java - 构造函数中传递的参数 - Java