Null 参照を使用した静的メソッドへのアクセス
Java では、Null 参照でメソッドを呼び出すと、通常、NullPointerException がトリガーされます。ただし、この動作は静的メソッドの場合は異なります。
静的メソッドとインスタンス メソッド
Java では、メソッドは静的メソッドまたはインスタンスのいずれかになります。静的メソッドはクラス自体に属し、クラス名を使用して直接呼び出すことができますが、インスタンス メソッドはオブジェクトに関連付けられており、呼び出すにはオブジェクト参照が必要です。
Null 参照を使用した静的メソッドの呼び出し
null 参照を使用して静的メソッドを呼び出すと、Java ランタイムは参照をメソッドが属するクラスの型に自動的に置き換えます。この動作により、クラスのインスタンスが存在しない場合や参照が null の場合でも、静的メソッドを確実に呼び出すことができます。
例
次の Java コードを考えてみましょう。
public class Why {
public static void test() {
System.out.println("Passed");
}
public static void main(String[] args) {
Why NULL = null;
NULL.test();
}
}
この例では、test() メソッドは静的であり、クラス名を使用して直接呼び出すことができます。 「NULL.test();」という行null 参照をクラス名「Why」に置き換え、test() メソッドを正常に呼び出します。 NullPointerException はスローされません。
この動作が許可されるのはなぜですか?
静的メソッドの実行にクラスのインスタンスが必要ないため、Java ではこの動作が許可されています。これらは、特定のオブジェクトではなく、クラス自体に関連付けられます。 null 参照を使用して静的メソッドが呼び出される場合、コンパイラは正しいクラス型が使用されることを確認します。
注意事項
null 参照を使用して静的メソッドを呼び出す場合、許可されているとしても、それは不適切な行為とみなされます。開発者は、混乱や潜在的なエラーを避けるために、静的メソッドにアクセスするときは常に正しいクラス名を使用する必要があります。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3