簡體   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