加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Scala:我可以在编译时声明一个不会生成getter和setter的公共字

发布时间:2020-12-16 09:18:24 所属栏目:安全 来源:网络整理
导读:在 Scala中声明val或var时,Scala会在编译为字节码时自动生成一个私有字段以及getter和setter. 例如. class myClass { val name = "My Name"} 将编译创建等效项 class myClass { private string name; public string name(); public void name_$eq(string);}
在 Scala中声明val或var时,Scala会在编译为字节码时自动生成一个私有字段以及getter和setter.

例如.

class myClass {
    val name = "My Name"
}

将编译创建等效项

class myClass {
    private string name;
    public string name();
    public void name_$eq(string);
}

其中name()和name_ $eq是私有字符串名称的getter和setter.

我知道你可以强制它不为私有领域提供getter和setter作为私有的这个val / var blah,但是我需要创建一个在编译时不生成getter和setter的公共字段.

这甚至可能在Scala吗?

谢谢

解决方法

生成的类不包含getter或setter,在您提供的示例中可以看到.生成的类不包含java bean getter或setter.为了使编译器为var生成getX和setX方法,您需要使用@BeanProperty注释该变量.

如果你想有一个可以从java访问的公共场所,我觉得你是不幸的幸运.至少,我还没有看到只有使用scala才能完成这个任务.

你可以通过混合scala和java来完成它.有一个java类,如:

public abstract class JavaClassWithPublicField {
   public String name = "My name";
}

然后在你的scala代码继承该类:

class ScalaClassWithPubilcField extends JavaClassWithPublicField

这可能是最干净的做法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读