【发布时间】:2020-05-04 19:58:46
【问题描述】:
考虑以下两个简单的java代码sn-ps:
import java.util.Arrays;
class Okay {
public static void main(String... args) {
System.out.println(Arrays.toString(new int[0]));
}
}
这很好用。但如果我经常使用 toString,我可能会想使用静态导入,如下所示:
import static java.util.Arrays.toString;
class DoesNotCompile {
public static void main(String... args) {
System.out.println(toString(new int[0]));
}
}
如果我尝试这样做,Java 会认为我正在尝试从 Object 调用 toString(),然后抱怨 toString 不接受任何参数。这似乎很愚蠢:我在一个静态方法中,所以 toString 甚至不应该被考虑。 (即使在实例方法中,我觉得Java应该在这里得到正确的答案。)
有什么办法可以解决这个问题,或者如果该名称已被“采用”,则静态导入不起作用?
【问题讨论】:
-
名为
toString的“最接近”的方法是你继承的,所以没有。但是,您始终可以在同一类或另一个类中定义具有不同名称的方法,例如arrToStr。 -
是的,我定义了 str(),但这似乎是一个烦人的解决方法。哦,好吧。
标签: java compiler-errors overloading overload-resolution