String.valueOf是一个重载方法,您在必须从上下文推断参数类型的上下文中使用它。另一方面,类型推理规则在Java
8中已经得到了重大改进。最值得注意的是, 目标类型推断 已大大改进。因此,尽管在Java
8之前方法自变量站点未收到任何推断,但
Object在您的情况下默认为默认值,在Java 8中,在这种情况下推断出了最特定的适用类型
char[]。
但是,请记住,在两种情况下,您使用的惯用法实际上都是无效的,因此编译器输出中的更改应指定为“陷阱”,而不是“错误”。
不幸的是,未经检查的强制转换有时是不可避免的,但是我无法想到在任何情况下都可以推断出不是由
Class对象反射性地创建的某种东西的类型本身(与类型参数相反)。因此,您不太可能实际处于此处显示的位置,在该位置您可以根据调用站点上可接受的参数类型来推断类型。而且,使用重载方法执行此操作当然是不可行的,而将参数类型的选择留给推理。这只能“偶然”起作用。



