2

同期すると、class.classで静的メソッドロックが取得されるため、class.classは何を表しますか。いくつかのフォーラムをグーグルで読んで読むと、java.lang.Classのインスタンスがわかり、メモリ内のすべてのクラスに1つ存在します。それらに関連付けられたjava.lang.Classのインスタンス。それは...ですか??

これを使用してそのクラスのオブジェクトを作成し、これをロックすることができます。それ以外に、通常のJavaアプリケーションで役立つすべての主要な機能が提供されていますか?

任意の参照リンクを歓迎します。ありがとう!!

4

1 に答える 1

1

... のインスタンスと、メモリ内のすべてのクラスに対して、それらに関連付けられたjava.lang.Classの 1 つのインスタンスが存在します。java.lang.Class

基本的にはい。ただし、合計ではなく、クラスローダーごとに 1 つのコピーだと思います。しかし、通常はクラスローダーが 1 つしかないため...

インスタンスは、クラスのClassインスタンスがそのクラスの他のすべてのインスタンスと異なるのと同様に、他のクラスとは異なるクラス全体を表します。したがって、静的メソッドはクラスに固有であるため (非静的メソッドがインスタンスに固有であるように)、静的メソッドを呼び出すときにクラス インスタンスで同期することは理にかなっています (メソッドが同期を必要とする場合)。synchronizedこれが、メソッド全体にキーワードを適用すると、JLS が言うことが起こる理由です。

于 2012-07-24T14:09:18.980 に答える