在C#中,default关键字设置类型参数的默认值。对于引用类型,这将为null,对于值类型,它将为零。
我正在寻找Java中的等效关键字或构造。我对Java中的引用与值类型非常模糊 - 它们的行为是否相同?
我有一个定义为
的函数private T BuildEntityFromResultSet(ResultSet resultSet)
{
// Initialize T appropriately
T entity = <blank>; // default(T) in C#.
}
是否有正确初始化T的关键字可以填写上面的空白?是否有必要关注Java中的初始值(除了null)?
我看到了this question,但它似乎没有回答我的。
答案 0 :(得分:3)
Java中不需要此功能,因为类型参数在运行时被擦除,即编译后字段entity
将为Object
类型。因此,您根本不能将原始类型(您称之为值类型)作为Java中的类型参数。并且所有引用类型的默认值为null
。
答案 1 :(得分:0)
Java中没有相应的构造。原始数字总是默认为零; boolean为false,Objects为null。但Java没有价值类型。
使用泛型,可以避免此功能。考虑:
public Holder<T> {
private T _value;
public reset() {
_value = ??
}
}
此处,我们无法使用Holder<int>
,只能使用Holder<Integer>
,因此_value
始终可以重置为空。
但是,我找到了一个错过此功能的地方。如果您正在为Java代理编写InvocationHandler,并且该方法的返回类型是基元,则只返回null不起作用。