在Java中模拟`property`:如何使用公共字段作为属性?

时间:2012-04-18 13:54:19

标签: java properties

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

参见示例:

public class User {
    public String name;
}

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

在编译时,play用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之外的其他东西)?

我找到Annotation Processing Tool,但我不确定它能做到。

或方面?或其他什么?

2 个答案:

答案 0 :(得分:1)

你可以看看Project Lombok,它做了类似的事情,但带有注释。使用项目lombok,您需要在自己的代码中使用getter和setter。

答案 1 :(得分:0)

不是没有其他工具。

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