【问题标题】:How to set to int value null? Java Android [duplicate]如何设置为int值null? Java Android [重复]
【发布时间】: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”为真时抛出异常。您也可以将其作为泛型类来避免为每个原始数据类型创建一个类。

标签: java android null integer int


【解决方案1】:

你不能。 int 是一个原始值类型 - 对于int,没有 null 值这样的概念。

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

不清楚您的方法试图达到什么目的,但您根本无法将 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。

    【讨论】:

      猜你喜欢
      • 2013-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-15
      • 2019-06-03
      • 1970-01-01
      • 1970-01-01
      • 2012-11-21
      相关资源
      最近更新 更多