在Eclipse中从Java访问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”中的exceptionjava.lang.Error:未解决的编译问题:字段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 {  private[this] val myNumber: Int = _; def this(myNumber: Int): $iw.$iw.TestScala = { TestScala.super.this(); () }; private[this] val myNum: Int = TestScala.this.myNumber;   def myNum: Int = TestScala.this.myNum } 

所以在Java int x = t.myNum(); 作品。