微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Java中访问Scala类字段

如何解决在Java中访问Scala类字段

我已经在Scala中定义了类A

class A(var number: Int)

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

A a = new A();
a.number = 4;

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

该如何解决该问题?

解决方法

使用吸气剂

a.number();

和二传手

a.number_$eq(4);

代替字段a.number

a.getNumber();
a.setNumber(4);

如果您注释该字段

import scala.beans.BeanProperty

class A(@BeanProperty var number: Int)

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

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

,

编译A.scala时,您可以查看生成的类文件,该文件可以从Dmytro的答案中解释getter number()和setter方法number_$eq

// A.scala
class A(var number: Int)
> scalac A.scala
> javap -p A.class
// output of above step

public class A {
  private int number;
  public int number();
  public void number_$eq(int);
  public A(int);
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。