Java:检查是否使用 int 和 Integer 设置了属性

标签 java types

假设我有这样一个对象:

Public Class Test{
    int a;
}

在我的程序中的某个时刻,我想检查是否设置了属性 a。我知道如果我使用 Integer 而不是 int 作为属性的类型,我可以这样做:

if(test.a!=null)
    ...;

但是如果我将 int 保留在那里并使用它来检查会怎样:

if(test.a!=0)
    ...;

一个问题是我无法区分零值和未设置的值,但在我的程序中它们是相同的,因为有效值都不同于 0。此外,使用 int 简化了我需要的事情稍后再做,比如使用 == 进行比较。

那么在这里使用 int 会好吗,还是总是首选 Integer?

最佳答案

这完全取决于您,两者都可以(前提是“unset”和 0 really 在您的程序中表示相同的内容)。我意识到这不是一个很好的答案,但这是事实。 :-) 如果“未设置”和 0 不是同一个意思,那将更强烈地支持 Integer,因此您可以正确地区分它们。

在下方回复您的评论:

I just wanted confirmation that an unset int will always be equal to 0

是的,int 始终初始化为 0,根据 Section 4.12.5 of the JLS .

关于Java:检查是否使用 int 和 Integer 设置了属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13209559/

相关文章:

java - 如何在另一个类中使用方法(在 Try-Catch 内)中的变量?

.net - 返回 System.Nullable 的 int64 的 GetType

scala - 如何在scala中构建无限不可变树

java - org.testng.TestNGException : Cannot instantiate class

java - Spring 3.0.5 <mvc :interceptor> not working

java - 从 SNMP4j 陷阱接收器获取目标 IP 地址

java - 不同的集合用于不同的数据排序

typescript - 为什么我的 Typescript 对象允许这个额外的属性?

javascript - 避免 TypeScript 中的 float Promise。 void 与 .catch 什么时候?为什么?

java - 有人可以向我解释 java 中的 .getClass() 方法吗