
问题是
String.valueOf方法已重载:
- String.valueOf(Object)
- String.valueOf(char[])
Java规范语言要求在这种情况下,选择最具体的重载:
JLS 15.12.2.5选择最具体的方法
如果可以访问多个成员方法并将其应用于方法调用,则必须选择一个成员方法来为运行时方法分派提供描述符。Java编程语言使用选择最特定方法的规则。
一个
char[]是-
Object但不是全部Object 是-一个
char[]。因此,
char[]它比特定于
Object,并且按照Java语言的规定,
String.valueOf(char[])在这种情况下选择重载。
String.valueOf(char[])期望数组为非数组
null,并且由于
null在这种情况下给出了数组,所以它抛出了
NullPointerException。
简单的“修复”是将null显式强制转换
Object为以下形式:
System.out.println(String.valueOf((Object) null));// prints "null"
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)