2012-05-17 69 views
3

我有一段代碼在Grails的:在Grails中,如何判斷一個對象是否是暫時的?

def product = Product.get(5) ?: new Product() 
product.isDiscounted = product.isDiscounted ?: true 

問題是,如果isDiscounted屬性已被設置爲現有的產品,它是假的,我會最終將其更改爲正確的。是否有可能檢查一個對象是否是瞬態的?

回答

5

在這種情況下,使財產Boolean代替boolean,則初始值將是null,而不是默認爲false。這也將有助於驗證,因爲您可以驗證false的選擇是有意的,而不僅僅是允許默認值。

通常,雖然您可以使用isAttached()方法(或屬性樣式變體attached),例如,

def product = Product.get(5) ?: new Product() 
product.isDiscounted = product.attached ? product.isDiscounted ? true 

這種情況其實可以更緊湊,在構造函數中的默認值完成:

def product = Product.get(5) ?: new Product(discounted: true) 
+0

感謝伯特。我來自C#背景,所以我沒有意識到'Boolean'與Java中的'boolean'不同。在C#中,兩者是相同的,並且在類型爲'bool?'後使用問號來聲明可以爲null的類型。 –

相關問題