繁体   English   中英

在Java中模拟“属性”:如何将公共字段用作属性?

[英]Simulate `property` in Java: how to use public field as property?

playframework中 ,它使用javassist库使类的公共字段可用作property

参见示例:

public class User {
    public String name;
}

User user = new User();
user.name = "Freewind"
System.out.println(user.name);

在编译时,用javassist播放增强了字节码,最终代码类似于:

public class User {
    private String name;
    public String getName() { return this.name; };
    public void setName() { this.name = name; };
}

User user = new User();
user.setName("Freewind");
System.out.println(user.getName());

您不仅可以看到字段name具有getter和setter,而且还可以将其调用更改为getter和setter。

我想知道是否还有其他方法可以做到这一点(使用javassist以外的其他方式)?

我找到了注释处理工具 ,但不确定它是否可以做到。

还是aspectj? 或者是其他东西?

您可以查看Project Lombok ,它的功能类似,但带有注释。 使用Lombok项目时,您确实需要在自己的代码中使用getter和setter。

并非没有其他工具。

与C#不同,Java不支持属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM