为什么在Java中无法进行Wrapper Integer到Float的转换

Ank*_*ani 8 java type-conversion wrapper

为什么Wrapper Float的类型转换在java for Wrapper Integer类型中不起作用.

public class Conversion {
    public static void main(String[] args) {
        Integer i = 234;

        Float b = (Float)i;

        System.out.println(b);

    }
}
Run Code Online (Sandbox Code Playgroud)

rge*_*man 17

一个Integer不是Float.对于对象,如果是Integer子类Float,则转换将起作用,但它不起作用.

当触发此期望行为的唯一代码是强制Integer转换时int,Java不会自动取消装入,转换为a float,然后自动装箱.Float(Float)

有趣的是,这似乎有效:

Float b = (float)i;
Run Code Online (Sandbox Code Playgroud)

Java将自动解压缩成i一个int,然后有显式强制转换float(扩展原始转换,JLS 5.1.2),然后赋值转换自动将其转换为a Float.