很多時候我們有很多實體類型的項目(Hibernate/JPA,...)。實體類型具有類似int的基本類型,long或字符串作爲ID。我們有DAO和服務來獲取並返回這些原語。創建類型作爲原始類型的包裝器
long doSomething(long blubId, long blabId, long fooId, long barId, ...)
正如你所看到的,它可以非常混亂。我想從靜態類型檢查中獲得優勢,併爲其提供類型。
long doSomething(BlubId blubId, BlabId blabId, FooId fooId, BarId barId, ...)
但是這似乎是低效的。你有什麼想法如何解決這個問題?
注意,與原語的處理有時需要在JEE上下文(JSF的bean,持久性,...)
「但是這似乎效率低下 - 」在您進行數據庫調用的情況下,您認爲效率會有多高? –
在Java中沒有特殊的方法來做到這一點。你只需要用'long'字段,一個getter和一個equals/hash/toString創建一個普通的類BlubId。它會像任何其他班級一樣工作。 (其他語言有特殊的處理方式,但不是Java。) – yshavit
@JonSkeet它在內存方面效率可能很低。想象一下許多複雜對象的集合。這些複雜的對象依次具有blubId,blabId ......作爲成員。在內存方面,以ID爲基元而不是使用至少BLOCKSIZE(通常= 512b)在堆上分配內存的對象(包裝器)是一種低成本。也不要忘記GC,... – kalamar