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 这可能是最干净的做法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |