2011-04-25 123 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