我想把一个Web表单转换成Java模型。在C#中,我可以这样写:
<input name="id" value="" type="text"/> public class Test { public int? Id{get;set;} }
id可以为空。但在Java中使用struts2时会抛出异常:
id
Method "setId" failed
那么如何用Java编写这个案例呢?
hxzsmxv21#
您可以使用Integer(Integer javadoc)来代替int,因为它是一个可以为空的Java类。
Integer
int
yebdmbv42#
您可以使用Integer,它是Java中的引用类型(类),因此可以为空。Int32(或int)在C#中是一个struct(值类型)。相比之下,Integer在Java中是一个 * Package * int的类。引用类型的示例可以是null,这使得Integer成为一个合法的选项。NET中的Nullable<T>提供了类似的选项,因为它使您能够将值类型视为可空类型。然而,它与Java的Integer仍然不同,因为它实现为一个struct(值类型),可以与null进行比较,但实际上不能包含真正的空引用。
Int32
null
Nullable<T>
sdnqo3pr3#
在Java中,只需使用Integer而不是int。这本质上是一个可以为空的int。我不太熟悉Struts,但使用Integer应该允许您省略该值。
cgvd09ve4#
Optional<Integer>-该类的用途是提供类型级解决方案,用于表示可选值而不是空引用。OptionalInt-一个容器对象,可能包含也可能不包含int值。如果存在值,isPresent()将返回true,getAsInt()将返回该值。
Optional<Integer>
4条答案
按热度按时间hxzsmxv21#
您可以使用
Integer
(Integer javadoc)来代替int
,因为它是一个可以为空的Java类。yebdmbv42#
您可以使用
Integer
,它是Java中的引用类型(类),因此可以为空。Int32
(或int
)在C#中是一个struct(值类型)。相比之下,Integer
在Java中是一个 * Package *int
的类。引用类型的示例可以是null
,这使得Integer
成为一个合法的选项。NET中的
Nullable<T>
提供了类似的选项,因为它使您能够将值类型视为可空类型。然而,它与Java的Integer
仍然不同,因为它实现为一个struct(值类型),可以与null
进行比较,但实际上不能包含真正的空引用。sdnqo3pr3#
在Java中,只需使用
Integer
而不是int
。这本质上是一个可以为空的int。我不太熟悉Struts,但使用Integer
应该允许您省略该值。cgvd09ve4#
Optional<Integer>
-该类的用途是提供类型级解决方案,用于表示可选值而不是空引用。OptionalInt-一个容器对象,可能包含也可能不包含int值。如果存在值,isPresent()将返回true,getAsInt()将返回该值。