1

私は初心者ですが、Java のすべての基本概念について説明しました。これまで、Object クラスを使用して ".class" 構文を使用してオブジェクト参照を作成する例に出くわしました。

これら2つの概念がどのように使用されているかについての説明を検索してみましたが、明確な画像が得られません.

私が見ているのは、はい、オブジェクトへの参照を作成できるということだけです。しかし、この参照はどのように/何のために使用されますか?

.class構文については、「リフレクション」という用語を見続けていますが、この構文を existingclass.class のような既存のクラスで使用すると、実際にはどうなりますか? インスタンス/オブジェクトを作成せずに < existingclass >でメソッド/データを使用するだけですか?

例をいただければ幸いです。

4

2 に答える 2

8
  1. への参照は、任意のオブジェクトObjectを指すことができます。さまざまな時点でさまざまな種類のオブジェクトを指すことができます。これは、任意の種類のオブジェクトを渡したい場合にメソッドに適したパラメーターの型であり、任意の種類のオブジェクトを返すことができるようにしたい場合に適した戻り値の型です。

  2. 表記ClassNameは、 ClassNameを表す.classインスタンスを返します。Java 仮想マシンにロードされたすべてのクラスには、そのクラスを表すオブジェクトがあります。それが何に役立つかについては、クラスが持つメソッドを尋ねるコードを書く、またはユーザーが入力したクラスの名前しかないときにクラスのインスタンスを作成するなど、かなり高度で魔法のようなものにのみ適していますまたはファイルから読み取ります。java.lang.Classjava.lang.Class

    また、スレッドについて学ぶと、クラス オブジェクトには静的メソッドに関して特別な目的があることがわかります。これは今は気にする必要はありません。初心者の Java プログラマーは、これを使用する必要はありません。しかし、いつかそうなるかもしれません。

于 2012-08-15T01:48:11.790 に答える
1

この言葉Javaには次の3つの意味があります。

  1. プログラミング言語。
  2. 仮想マシン (JVM) 仕様;
  3. Java アプリケーションのランタイム環境。

プログラミング言語の観点からは、文法と構文を定義します。言語の使い方を教えてくれます。の知識を得るには.class、JVM 仕様を参照することをお勧めします (そうです、既に言語の範囲を超えています)。

大まかに言えば、プログラムは、.class固有のスーパークラス名、実装されたインターフェイス、および最も重要なコンパイル済みコードなどを含む、バイト コード形式のファイルに完全にコンパイルされます。

プログラムを実行するとき、.classその完了に寄与するすべての を JVM にロードする必要があります。IIRC では、クラスは、プログラムが実行される瞬間ではなく、プログラムによって最初に参照されたときにロードされます。たとえば、インポート命令または.classコード内の直接参照によってロードされます。

あなたの質問に答えるために、.class構文はメソッド定義や静的変数などのクラス情報を参照するために使用されるだけでなく、JVM ロード固有のクラスを強制するためにも使用されます。(JDBC に精通している場合、または将来 JDBC を使用する機会がある場合は、.class構文を使用してデータベース ドライバーを強制的にロードできることがわかります)

于 2012-08-15T02:15:07.573 に答える