java - 为什么将短变量赋值给 Integer 引用会产生编译时错误?

标签 java casting type-conversion boxing

我在 Java 中有以下代码:

class Boxing
    {
        public static void main(String args[])
        {
            short s = 10;
            Integer iRef = s;
        }
    }

为什么编译会报错?如果我在表达式中将 short 显式转换为整数,它会成功编译。因为我在表达式中使用了一个 short 类型,所以在不需要显式大小写的情况下,默认情况下它不是应该是整数的类型吗?

最佳答案

你想在这里发生两件事:扩大和自动装箱。

不幸的是,Java 只能自动完成两者之一。原因很可能是自动装箱引入的时间很晚(在 Java5 中),他们必须小心不要破坏现有代码。

你可以做到

int is = s;    // widening

Short sRef = s;   // autoboxing

Integer iRef = (int) s;  // explicit widening, then autoboxing

关于java - 为什么将短变量赋值给 Integer 引用会产生编译时错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33868133/

相关文章:

java - Spring STS DB 与 Jpa 的连接

java - 如何将字符串参数传递给 ArrayList 参数

php - 将索引数组转换为对象

c++ - 十六进制到长双C++

C++11:保证来自模板参数的非转换引用

java - 多次读取时,从 TCP 服务器的读取挂起

java - 初始化字符数组时出现精度损失错误

java - MongoDB 恢复旧查询或跳到文档

c++ - 将 8 个 uint8_t 组合成一个 uintmax_t 的最快方法是什么?

C++ 浮点到整数类型的转换