对valueOf的引用是不明确的

Won*_*rld 0 java ambiguous

我遇到了:import static java.lang.Float.*;,注意static(实际上它import static java.lang.Math.*只是旁边).我以前从未见过它,并认为它非常有用,Float.valueOf("1.234f");变成了valueOf("1.234f").

但是当我添加时import static java.lang.Integer.*;,我收到一条错误消息:"reference to valueOf is ambiguous"因为这两个类都有(静态)方法.

那是不可能的?我可以在它模糊不清的地方使用它只有一段时间吗?

旁注:

这种情况与我们为什么只有extend一个类的背景相同,因为如果我们可以使用extend两个类,对于所有静态字段等,命名可能会导致相同的问题吗?

Jos*_*lds 5

如您所知,Float在静态导入静态方法时,无需引用它.但由于双方Float.valueOf(String string)Integer.valueOf(String string)可用,怎么可能编译器知道你的意思是你想一个浮点值,或当你调用一个整数值valueOf(String string)

编译器仅匹配方法名称和签名:"valueOf"和单个字符串参数.它没有看到你的字符串中有一个小数点和一个f:那是什么valueOf.

要解决歧义,请调用Float.valueOf("1.234f")Integer.valueOf("1234").