2014-02-24 138 views
1

这是设置已定义的最佳方式intnull如何设置为int值null? Java Android

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 
} 

我的第二个问题,我可以放心地投整数为int?

感谢您的回复。

+0

编写一个类来包装整数并添加一个名为“invalid”的布尔值,并在整数应为null时将其设置为true。现在您可以在调用它时检查整数是否无效。当getInt()被调用但是“invalid”为真时,你也可以抛出一个异常。你也可以把它作为一个泛型类来避免为每一个原始数据类型做一个类。 –

回答

9

在这种情况下,我会避免一起使用null

只需使用-1为您null

如果您需要-1是一个可以接受(NOT NULL)值,然后用float代替。因为你所有的真实答案都是整数,所以你可以找到一个值,即x永远不会像Integer.MAX_VALUE什么的。

+0

我用你的答案...谢谢 – user2899587

+0

我认为使用float而不是int,其中所有可能的值实际上是整数,这真的很难看。 –

12

你不能。 int是原始值类型 - 没有intnull值这样的概念。

您可以使用nullInteger,因为这是一个类,而不是原始值。

目前还不清楚你的方法试图达到什么目的,但是你根本不能将null表示为int

+0

如果我将整数转换为int,那么我可以问(int x == null)? – user2899587

+1

如果您尝试将'null'' Integer'转换为'int',那么您将在Cast中获得一个'NullPointerException'._ –

+0

所以现在该怎么做了......谢谢 – user2899587

5

只有对象可以为null。基元(如int)不能。

我可以安全地将Integer转换为int吗?

你不需要剧组,你可以依靠自动拆箱。然而,它可能会抛出一个NullPointerException:

Integer i = 5; 
int j = i; //ok 

Integer k = null; 
int n = k; //Exception 
0

你的方法编译,但试图拆箱整数时会抛出NullPointerException ...

整数和INT之间的选择取决于你想要达到的目的。你真的需要一个额外的状态指示“没有价值”?如果这是一个合法的状态,请使用Integer。否则使用int。

相关问题