【问题标题】:assign Integer type to int将整数类型分配给 int
【发布时间】:2015-01-15 17:37:22
【问题描述】:

Integer 分配给int 是否有任何问题(当然是运行时间)?

int x= Integer.class.cast(parameters.get("PO_PAGE_CNT"));

由于Integer 是父类而int 是实例,我想在某些情况下我可能会在运行时得到ClassCastException 或其他类型的异常。对吗?

【问题讨论】:

  • 除非您使用的是非常旧的 JDK,否则 cast 的返回值将自动拆箱为 int,一切都会好起来的...
  • 你可以(int) parameters.get("PO_PAGE_CNT")。更棒的是……你不用投,你可以int x = parameters.get("PO_PAGE_CNT")
  • @Jonk 以及较新的 JDK 会发生什么?他们不能自动拆箱?从什么版本开始不支持这个功能?
  • 我想你可能误解了我的意思——所有较新的 JDK 都会自动拆箱,这样可以正常工作。这是真正旧的 JDK(1.5 之前),这将无法正常工作。

标签: java types casting type-conversion


【解决方案1】:

假设parameters.get("PO_PAGE_CNT")返回一个Integer的实例,这个赋值没有问题。

简单地写会更易读:

int x = (Integer) parameters.get("PO_PAGE_CNT");

始终可以将 int 分配给整数(装箱),反之亦然(拆箱)。

【讨论】:

    【解决方案2】:

    没问题。有一个概念叫做装箱和拆箱。你可以关注这个link

    【讨论】:

      【解决方案3】:

      不,没有问题。整数值会自动拆箱为 int 值,反之亦然。

      不过,有一个例外。如果parameters.get("PO_PAGE_CNT") 返回null,您将得到NullPointerException,因为没有int 等效于null

      【讨论】:

      • 这里的所有答案都是正确的。但既然你提到了一个例外,我选择你的作为正确和更完整的答案
      【解决方案4】:

      没有问题。您正在对整数进行装箱和拆箱。如果您将 Integer 拆箱为 int ,则不会有 ClassCastException

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-12-03
        • 1970-01-01
        • 2021-03-08
        • 2020-06-21
        • 2021-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多