scala调用java变量,在Eclipse中从Java访问Scala实例变量

I suspect I must be missing something very elementary but I can't seem to access Scala fields from Java code:

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);

}

}

Yields:

Exception in thread "main" java.lang.Error: Unresolved compilation problem:

The field TestScala.myNum is not visible

This Assembla ticket touches on the subject but my tiny cranium cannot parse a useful solution:

Thanks

解决方案

Val fields are accessed through methods with same name.

scalac -Xprint:typer will show you that:

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

}

So in Java int x = t.myNum(); works.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值