2

Java の静的メソッドと変数について読んでいて、スタック オーバーフローに関する次の 2 つの記事を見つけました。

Javaの静的メソッドは常にコンパイル時に解決されますか? つまり、静的メソッドはコンパイル時に解決されます。

java、ランタイム、またはコンパイル時に静的変数がロードされるのはいつですか? 時間またはコンパイル時間

つまり、静的メソッドはコンパイル時にロードされます。

コンパイラは、静的変数/メソッドを解決するとき(コンパイル時など)にそれらをロードするべきではありませんか? ややこしい!誰かが明確にしてもらえますか?

4

1 に答える 1

8

「解決」と「ロード」という用語の意味について混乱しているように思えます。

メソッド/変数の解決とは、どのメソッド/変数が呼び出されるかを正確に決定することを意味します。たとえばメソッドの場合、これは実行時に行われ、サブクラスがスーパークラスのメソッドをオーバーライドできるようになります (ポリモーフィズム)。ただし、静的メソッドはオーバーライドできず、コンパイル時に解決されます。

変数をロードするということは、実際に値をメモリに取得することを意味します。もちろん、これは実行時にのみ発生します。具体的には、クラス自体がロードされるときに静的変数がロードされます。

于 2012-10-16T22:48:04.413 に答える