2011-04-25 67 views
1

在C#中,default關鍵字設置類型參數的默認值。對於引用類型,這將爲空,值類型爲零。什麼是C#的默認()的等效Java關鍵字/結構?

我正在尋找一個相當於Java的關鍵字或構造。我對Java中的引用與值類型非常模糊 - 它們的行爲是否相同?

我得定義爲

private T BuildEntityFromResultSet(ResultSet resultSet) 
{ 
    // Initialize T appropriately 
    T entity = <blank>; // default(T) in C#. 
} 

功能是否有初始化牛逼正確,可以在上面填空的關鍵詞?是否有必要關注Java中的初始值(非null)?

我看到this question,但它似乎沒有回答我的。

回答

3

此功能不需要在Java中,因爲類型參數在運行時被擦除,即你的領域entity編譯後會Object類型。因此,Java中的所有類型參數都不能有原始類型(您稱之爲值類型)。而所有參考類型的默認值是null

0

Java中沒有相應的構造。原始數字總是默認爲零;布爾值爲false,對象爲null。但Java沒有價值類型。

使用泛型時,可以避免此功能。試想一下:

public Holder<T> { 
    private T _value; 
    public reset() { 
    _value = ?? 
    } 
} 

在這裏,一個不能用Holder<int>,只有Holder<Integer>,所以_value總是可以重新設置爲null。

但是,我發現這個功能被遺漏的地方。如果您正在爲Java代理編寫一個InvocationHandler,並且該方法的返回類型是一個基元,則僅返回null不起作用。

+0

Java具有值類型。它只是假裝它沒有。嘗試使一個int null。前進。嘗試。 – Cdaragorn 2017-06-27 22:15:27

相關問題