Java 自动装箱不到包装器
为什么现在a是整数?为什么不兼容类型编译错误?Java教程明确指出: 自动装箱是Java编译器在原语类型与其对应的对象包装器类之间进行的自动转换Java 自动装箱不到包装器,java,autoboxing,Java,Autoboxing,为什么现在a是整数?为什么不兼容类型编译错误?Java教程明确指出: 自动装箱是Java编译器在原语类型与其对应的对象包装器类之间进行的自动转换 为什么Java autobox“3”会在这种情况下变为整数?我看不出有任何理由会出现编译错误。在这种情况下,一旦原语类型3自动装箱到其包装类型Integer,就不会有任何编译错误,因为Integer隐式继承自Object,这意味着您可以轻松地将Integer类型的任何对象分配给Object类型 我不明白为什么原始类型“3”会自动装箱到它的包装器中 输入
为什么Java autobox“3”会在这种情况下变为整数?我看不出有任何理由会出现编译错误。在这种情况下,一旦原语类型
3
自动装箱到其包装类型Integer
,就不会有任何编译错误,因为Integer
隐式继承自Object
,这意味着您可以轻松地将Integer
类型的任何对象分配给Object
类型
我不明白为什么原始类型“3”会自动装箱到它的包装器中
输入整数
它必须是自动装箱的,否则,您无法将基元类型分配给类型
对象
。由于接收类型是一个类型对象
(一个引用类型),因此原语类型必须自动装箱以使其兼容。因此,可以将引用类型指定给引用类型 我看不出有任何理由会出现编译错误。在这种情况下,一旦原语类型3
自动装箱到其包装类型Integer
,就不会有任何编译错误,因为Integer
隐式继承自Object
,这意味着您可以轻松地将Integer
类型的任何对象分配给Object
类型
我不明白为什么原始类型“3”会自动装箱到它的包装器中
输入整数
它必须是自动装箱的,否则,您无法将基元类型分配给类型
对象
。由于接收类型是一个类型对象
(一个引用类型),因此原语类型必须自动装箱以使其兼容。因此,可以将引用类型指定给引用类型 这适用于你遇到的大多数其他物体;只要两个对象之间有一个共同的祖先,就可以将一个对象指定给另一个对象。这被称为,之所以这样命名是因为它所回答的问题<代码>整数是一个对象
自动装箱只需获取一个基元类型并将其转换为自身的对象包装表示。没有信息丢失,编译器正在将原语强制转换为对象
。因此,您的任务是合法的
如果这两个对象之间没有直接关系,则会出现编译错误
例如:
Object a = 3;
System.out.println(a.getClass().getName());
…将导致编译错误,因为无法将整数
分配给字符串
,但还有一件事:所有非十进制数字都假定为
int
,除非它们的后缀是L
或L
,在这种情况下,它们是长的这适用于你遇到的大多数其他对象;只要两个对象之间有一个共同的祖先,就可以将一个对象指定给另一个对象。这被称为,之所以这样命名是因为它所回答的问题<代码>整数
是一个对象
自动装箱只需获取一个基元类型并将其转换为自身的对象包装表示。没有信息丢失,编译器正在将原语强制转换为对象
。因此,您的任务是合法的
如果这两个对象之间没有直接关系,则会出现编译错误
例如:
Object a = 3;
System.out.println(a.getClass().getName());
…将导致编译错误,因为无法将整数
分配给字符串
,但还有一件事:所有非十进制数字都假定为int
,除非它们的后缀是L
或L
,在这种情况下,它们是long
扩展答案,您也可以使用Number
,因为整数也继承自它。但是,您不能使用LinkedList
或类似的内容。您始终可以将视图降低到一个对象,这就是这里发生的所有事情。例如objectobj=newlinkedlist()代码>或集合c=新链接列表()代码>也有效。我理解这一点。我不明白为什么原语类型“3”会自动装箱到它的包装器类型Integer。如果可能的话,Java会尝试将int
自动装箱到Integer
和Integer
到int
任何需要的地方,也就是当某个对象需要对象而不是数据类型时,反之亦然(对于其他类型也是如此)。在您的代码中需要一个对象
,因此Java尝试将int
自动装箱到Integer
,并且它可以工作。为了扩展答案,您还可以使用Number
,因为Integer
也继承自它。但是,您不能使用LinkedList
或类似的内容。您始终可以将视图降低到一个对象,这就是这里发生的所有事情。例如objectobj=newlinkedlist()代码>或集合c=新链接列表()代码>也有效。我理解这一点。我不明白为什么原语类型“3”会自动装箱到它的包装器类型Integer。如果可能的话,Java会尝试将int
自动装箱到Integer
和Integer
到int
任何需要的地方,也就是当某个对象需要对象而不是数据类型时,反之亦然(对于其他类型也是如此)。在您的代码中,需要一个对象
,因此Java尝试将int
自动装箱到Integer
,并且可以正常工作。