2012-04-18 66 views
0

playframework中,它使用javassist庫讓一個類的公共字段可以用作property在Java中模擬'property':如何使用public field作爲屬性?

見例如:

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具有吸和setter,而且它的調用變成了getter和setter。

我不知道是否有其他方法可以做同樣的事情(使用除javassist之外的其他東西)?

我發現Annotation Processing Tool,但我不確定它能做到這一點。

or aspectj?或者是其他東西?

+1

您是否要求購買與javassist競爭的其他工具? – SLaks 2012-04-18 13:55:34

+0

我想知道任何工具可以做到這一點 – Freewind 2012-04-18 13:58:21

回答

1

您可以查看Project Lombok,它做了類似的事情,但帶有註釋。有了lombok項目,你需要在你自己的代碼中使用getters和setter。

+0

我檢查過。是的,它可以生成getters/setters,但我們不能直接使用field。 – Freewind 2012-04-18 13:59:49

0

不是沒有其他工具。

與C#不同,Java不支持屬性。

相關問題