私は静的コンテキストでもスコープ内の同じ名前のメソッドすべてをJava非静的メソッドで上書きすることを実験によって確認しました。パラメータのオーバーロードを許可しなくても。 LikeJava静的インポート
import java.util.Arrays;
import static java.util.Arrays.toString;
public class A {
public static void bar(Object... args) {
Arrays.toString(args);
toString(args); //toString() in java.lang.Object cannot be applied to (java.lang.Object[])
}
}
これについては何も見つかりません。これはバグですか?そうでない場合は、そのような言語を実装する理由はありますか?
UPD:Java 6はこの例をコンパイルしません。質問は - なぜですか?
それはスーパーオブジェクトの 'toString()' –
IMHOを参照しているようですが、静的インポート機能全体が悪い概念であり、名前空間を汚染し、コードの読みやすさを混乱させます。怠け者ではない、静的関数の囲むクラス/インタフェースをタイプするのはそれほど難しいことではないが、私たちはそのためのIDEを持っている。静的なインポートを使用しないようにしてください。 – buc
@ジーガー・ジョシ、そうだね。しかし、私は何かを見つけることはできません。さらに、私たちは静的コンテキストから 'Object.toString'を呼び出すことができないので、この振る舞いではロジックが表示されません。 –