【问题标题】:What is the differences between Int and Integer in Scala?Scala中的Int和Integer有什么区别?
【发布时间】:2010-11-19 03:26:15
【问题描述】:

我正在处理一个声明为整数的变量,并发现 > 不是整数的成员。这是一个简单的例子:

scala> i
warning: there were deprecation warnings; re-run with -deprecation for details
res28: Integer = 3

scala> i > 3
<console>:6: error: value > is not a member of Integer
       i > 3
         ^

将其与 Int 进行比较:

scala> j
res30: Int = 3

scala> j > 3
res31: Boolean = false

Integer 和 Int 有什么区别?我看到了弃用警告,但我不清楚它为什么被弃用,鉴于已经弃用,为什么它没有 > 方法。

【问题讨论】:

  • 感谢大家提供有用的答案。你们都回答了我的问题,所以我会让评分最高的回答上升到顶部并将其标记为答案。同时,我已对您的所有回复进行了评分。

标签: scala types integer int


【解决方案1】:

Integer 从 java.lang.Integer 导入,仅用于与 Java 兼容。既然是Java类,当然不能有一个叫“

编辑:您可以通过声明从 Integer 到 Int 的隐式转换来缓解此问题。

【讨论】:

    【解决方案2】:

    Integer 从 java.lang.Integer 导入,仅用于与 Java 兼容。既然是Java类,当然不能有一个叫“

     implicit def toInt(in:Integer) = in.intValue()
    

    您仍然会收到弃用警告。

    【讨论】:

      【解决方案3】:

      “Integer 和 Int 有什么区别?”

      Integer 只是 java.lang.Integer 的别名。 Int 是具有额外功能的 Scala 整数。

      查看 Predef.scala 你可以看到这个别名:

       /** @deprecated use <code>java.lang.Integer</code> instead */
        @deprecated type Integer = java.lang.Integer
      

      但是,如果需要,可以从 Int 隐式转换为 java.lang.Integer,这意味着您可以在采用 Integer 的方法中使用 Int。

      至于为什么不推荐使用它,我只能假设这是为了避免混淆您使用的是哪种整数。

      【讨论】:

        【解决方案4】:

        Integer 是一个 Java 类,java.lang.Integer。它不同于Java 的原始类型int,它不是一个类。它不能定义&lt;,因为Java 不允许为类定义运算符。

        现在,您可能想知道为什么会存在这种类型?好吧,原始类型不能作为引用传递,因此您不能将int 传递给期望java.lang.Object 的方法,例如,等效于Scala 的AnyRef。为此,您将int 放入Integer 对象中,然后传递Integer

        【讨论】:

          【解决方案5】:

          我认为您看到的问题是值类型的装箱/拆箱以及 Java 类 Integer 的使用。

          我想答案就在这里:Boxing and unboxing in Scala。 Scala 中没有隐含的拆箱。您已将 i 定义为 Java 类 Integer,但在 i > 3 中,正在处理 3 和一个 int。

          【讨论】:

          • 链接已断开。
          猜你喜欢
          • 2011-03-26
          • 2015-01-29
          • 2013-09-21
          • 2010-10-15
          • 2010-09-05
          • 2013-10-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多