如何设置为int值null? Java Android [重复]
Posted
技术标签:
【中文标题】如何设置为int值null? Java Android [重复]【英文标题】:How to set to int value null? Java Android [duplicate] 【发布时间】:2014-03-26 19:45:33 【问题描述】:将已定义的 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 吗?
感谢您的回复。
【问题讨论】:
编写一个类来包装整数并添加一个名为“invalid”的布尔值,并在整数应该为空时将其设置为true。现在您可以在调用它时检查整数是否无效。您也可以在调用 getInt() 但“invalid”为真时抛出异常。您也可以将其作为泛型类来避免为每个原始数据类型创建一个类。 【参考方案1】:你不能。 int
是一个原始值类型 - 对于int
,没有 null
值这样的概念。
您可以将null
与Integer
一起使用,因为这是一个类,而不是原始值。
不清楚您的方法试图达到什么目的,但您根本无法将 null
表示为 int
。
【讨论】:
如果我将 Integer 转换为 int,我可以问 (int x == null) 吗? 如果您尝试将null
Integer
转换为int
,那么您将在转换时获得NullPointerException
。
所以现在该怎么做...谢谢【参考方案2】:
在这种情况下,我会避免同时使用null
。
只需使用-1
作为您的null
如果您需要 -1
成为可接受的(非空)值,请改用 float
。由于您所有的真实答案都将是整数,因此请将您的 null 0.1
或者,找到x
永远不会出现的值,例如Integer.MAX_VALUE
或其他东西。
【讨论】:
我认为在所有可能的值实际上都是整数的情况下使用 float 而不是 int 真的很难看。【参考方案3】:只有对象可以为空。基元(如int
)不能。
我可以安全地将 Integer 转换为 int 吗?
您不需要演员表,您可以依靠自动拆箱。但是它可能会抛出 NullPointerException:
Integer i = 5;
int j = i; //ok
Integer k = null;
int n = k; //Exception
【讨论】:
【参考方案4】:您的方法可以编译,但在尝试拆箱 Integer 时会抛出 NullPointerException...
Integer 和 int 之间的选择取决于您要达到的目标。你真的需要一个额外的状态来表示“没有价值”吗?如果这是合法状态,请使用整数。否则使用 int。
【讨论】:
以上是关于如何设置为int值null? Java Android [重复]的主要内容,如果未能解决你的问题,请参考以下文章
如果列在 PostgreSQL 中同时包含 int 和 NULL 值,如何从文本转换为 int
如果 Int32.TryParse 无法解析字符串,如何将其输出设置为 null? [复制]