在java中访问scala类字段

Sør*_*nHN 1 java scala scala-java-interop

我已经A在 Scala 中定义了这个类:

class A(var number: Int)
Run Code Online (Sandbox Code Playgroud)

但是当我尝试number在 java 中访问其成员字段时,出现错误:

A a = new A();
a.number = 4;
Run Code Online (Sandbox Code Playgroud)

结果:java: number has private access in A。如果我尝试number从 Scala访问,则没有问题。

我该怎么做才能解决这个问题?

Dmy*_*tin 9

使用吸气剂

a.number();
Run Code Online (Sandbox Code Playgroud)

和二传手

a.number_$eq(4);
Run Code Online (Sandbox Code Playgroud)

而不是字段本身a.number

或者

a.getNumber();
a.setNumber(4);
Run Code Online (Sandbox Code Playgroud)

如果您注释该字段

import scala.beans.BeanProperty

class A(@BeanProperty var number: Int)
Run Code Online (Sandbox Code Playgroud)

如果我尝试number从 Scala访问,则没有问题。

在 Scala 中,当您编写a.numbera.number = 4实际调用 getter/setter 时(这是语法糖)。