如何在Java中编写可为null的int?


73

我想将Web表单转换为Java模型。

在C#中,我可以这样写:

<input name="id" value="" type="text"/>


public class Test
{
    public int? Id{get;set;}
}

id可以为空。

但是在Java中,使用struts2时会引发异常:

Method "setId" failed

那么如何用Java编写这种情况呢?


8
使用Integer代替int
jlordo 2013年

Answers:



47

您可以使用Integer,这是Java中的引用类型(类),因此可以为空。

Int32(或int)是C#中的结构(值类型)。相反,Integer在Java中,是一个包装了的类int。引用类型的实例可以是null,这是Integer一个合法选项。

Nullable<T>.NET中的NET提供了类似的选项,因为它使您可以将值类型视为可为空的类型。但是,它仍然与Java有所不同,Integer因为它实现为可以与进行比较的struct(值类型)null,但实际上不能保存真正的null引用。


3
这是比公认的答案更彻底的答案
John Demetriou 2015年

8

在Java中,只需使用Integer代替即可int。这本质上是一个可为null的int。我对Struts不太熟悉,但是使用Integer应该可以忽略该值。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.