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

Eph*_*ere 4 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);      
    }
}
Run Code Online (Sandbox Code Playgroud)

产量:

线程"main"中的异常java.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

谢谢

ped*_*rla 9

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
}
Run Code Online (Sandbox Code Playgroud)

所以在Java中int x = t.myNum();工作.