2010-10-18 16 views

回答

4

那麼在龍目島一個Java類可能是這樣的

import lombok.Data; 

@Data public class Cart { 
    private int id; 
    private DateTime created; 
    private int items; 
    private int status; 
} 

雖然在C#中同一類看起來像這樣

public class Cart { 
    public int Id { get; set; } 
    public DateTime Created { get; set; } 
    public int Items { get; set; } 
    public int Status { get; set; } 
} 

所以C#(3.0在這個例子中)得到相當接近無任何其他庫,但是當你開始爲某些屬性添加「final」時,龍目的神奇「自動構造函數」部分真的很閃耀。至於.Net的替代品,據我所知,.Net註釋並沒有提供截取字節碼到編譯器之前的能力(Lombok使用這種效果非常好),所以你的選擇僅限於某些模板系統+構建腳本,如nAnt。這將是一個混亂的維護。

+0

你不能攔截字節碼生成,但是有一些相當複雜的庫來解析最終的程序集。您可以在代碼中使用公共字段,然後在生成後步驟中將所有涉及的程序集重寫爲使用自動生成的屬性。但是你將無法實現龍目與這種技術所做的一切。更好地使用T4(代碼生成)和部分類。 – 2010-12-13 20:29:10

+3

@Jason你的C#代碼並不等同於Java代碼:equals和hashCode缺失。龍目島也生成這一點。 – Jirka 2013-05-07 07:58:55

+1

的確如此。自從我寫出這個答案已經有相當長的一段時間了。自那時以來我學到了很多東西,但我認爲我的觀點仍然存在。 Lombok會自動執行很多操作,而且它使用的方法(仍然)是Java所獨有的。 – 2013-05-07 08:03:51