1

重複の可能性:
Javaのクラスリテラルとは何ですか?

私はこの文に出くわしたJavaチュートリアルでリテラルを調べていました:

最後に、クラスリテラルと呼ばれる特別な種類のリテラルもあります。これは、型名を取得して「.class」を追加することによって形成されます。たとえば、String.class。これは、型自体を表す(Class型の)オブジェクトを指します。

これ以前に他のすべてのトピックに注意を払っていたとしても、これは私には意味がありません。誰かが例や参考文献を使って簡単な言葉で説明できますか?

4

5 に答える 5

4

クラスのインスタンスはjava.lang.Class、実行中の Java アプリケーションのクラスとインターフェースを表します。アプリケーション内のクラスごとに、 のインスタンスがありますClassSomeClass.class構文は、 から対応する のインスタンスに到達する方法SomeClassですClass

于 2013-01-10T18:18:26.380 に答える
2

クラス リテラルは、インスタンスではなく、クラス自体に関係する何かを実行する場合に使用する特別な型です。

これは、私がこれを一般的に使用するいくつかのことの短いリストです (まったく包括的ではありませんが、良いアイデアを得ることができます)。

1.) リフレクション、知らないかもしれない何かを実行時にインスタンス化したい (おそらくそれは Class 型の変数に格納されていた)

2.) 2 つのオブジェクトが同じ関連タイプであるかどうかを確認したい場合は、次の行に沿って何かを記述できます。B.class.isAssignableFrom(a.getClass());

3.) おそらく文書化のために、クラス内のすべてのメソッドまたはパブリック変数をリストしたい。

他にもたくさんの用途がありますが、これらは私が一般的に使用している主な用途です。

于 2013-01-10T18:18:24.263 に答える
1

簡単に言えば、あなたが呼ぶものclass literalは、いくつかを完全に記述するオブジェクトですclass: すべてのメソッド、すべてのフィールド、すべての注釈、クラスの修飾子など。実行時にそのクラスの新しいインスタンスを作成するために必要です。

于 2013-01-10T18:15:38.423 に答える
0

参照型またはプリミティブ型のラッパー クラスのクラス識別子として評価されます。式 void.class は、Void クラスのクラス識別子に評価されます。「String.class」と同じこと

于 2013-01-10T19:26:34.187 に答える
0

短い例:

    Class x = String.class;
    System.out.println(x);

xオブジェクトが指すクラスの実行時インスタンスを作成したり、それに対してオブジェクトのクラスをテストしたりするために使用できます。

于 2013-01-10T18:18:21.977 に答える