这是将已经定义的 int 设置为 null 的最佳方法吗?
private int xy(){
int x = 5;
x = null; //-this is ERROR
return x;
}
所以我选择了这个
private int xy(){
Integer x = 5;
x = null; //-this is OK
return (int)x;
}
然后我需要类似的东西:
if(xy() == null){
// do something
}
我的第二个问题是否可以安全地将Integer转换为int?
感谢您的回复。
答案 0 :(得分:12)
你做不到。 int
是原始值类型 - null
没有int
值这样的概念。
您可以将null
与Integer
一起使用,因为这是类而不是原始值。
您的方法尝试实现的目标并不十分清楚,但您无法将null
表示为int
。
答案 1 :(得分:10)
在这种情况下,我会避免一起使用null
。
只需使用-1
作为null
如果您需要-1
为可接受(非空)值,请改用float
。由于您的所有真实答案都是整数,因此请将空0.1
或者,找到x
永远不会出现的值,例如Integer.MAX_VALUE
或其他内容。
答案 2 :(得分:5)
只有对象可以为null。基元(如int
)不能。
我可以安全地将Integer转换为int吗?
你不需要演员,你可以依靠自动拆箱。但是它可能会抛出NullPointerException:
Integer i = 5;
int j = i; //ok
Integer k = null;
int n = k; //Exception
答案 3 :(得分:0)
您的方法编译,但在尝试取消整理整数时会抛出NullPointerException ...
Integer和int之间的选择取决于您要实现的目标。你真的需要一个表示“没有价值”的额外状态吗?如果这是合法状态,请使用Integer。否则使用int。