ホームページ >Java >&#&チュートリアル >JavaにおけるClassクラスの役割を詳しく解説

JavaにおけるClassクラスの役割を詳しく解説

黄舟
黄舟オリジナル
2017-10-17 09:31:362753ブラウズ

この記事では主に Java の Class クラスの役割と深い理解を紹介します。この記事がこの部分の理解に役立つことを願っています。必要な友人はそれを参照してください。

Java の Class クラスの詳細な理解

プログラムの実行中、Java ランタイム システムは、すべてのオブジェクトに対してランタイムと呼ばれる型識別子を常に維持します。この情報は、各オブジェクトが属するクラスを追跡します。 JVM は実行時情報を使用して、適切な実行メソッドを選択します。この情報を保持するクラスは Class と呼ばれます。混乱を招きやすいかもしれませんし、階級を考えてしまいやすいかもしれません。ただし、この 2 つは相互に関係はありません。クラスはクラスを説明するキーワードにすぎません。 Class は実行時の情報を格納するクラスです。

何ができるの? Class クラスは、プログラムの実行時にクラスを分析するのに役立ちます。端的に言えば、クラス内の値を取得することです。たぶん、すぐに反省を思いついたのかもしれません、はい!クラスは通常、クラスまたはクラスのクラス名をクラスに提供し、クラスは属性/メソッド/修飾子/コンストラクター/クラス名などの多くの情報を提供できるため、リフレクションと組み合わせて使用​​されます。その後、さらに反省を進めていきます。とはいえ、まずはClassクラスの内容と使い方を簡単に理解しておきましょう!

このクラスには情報が多すぎるため、これを使用して特定のクラスのフィールド/メソッドおよびコンストラクターを取得できます。よく使用されるメソッドをいくつか示します:


 String str = new String();
 Class cl = str.getClass();

クラスを通じて Class オブジェクトを取得し、このタイプの情報を取得できます。 Class オブジェクトを完全なクラス名で取得することもできます。


 public static void main(String[] args) throws Exception {
 // 以String.class为例
 String str = new String();
 Class cl = str.getClass();
 /**
  * 获取包名+类名<br>
  * java.lang.String
  */
 cl.getName();
 /**
  * 只获取类名 - String
  */
 cl.getSimpleName();
 /**
  * 获取数组的Class对象<br>
  * 因为所有的Java类都继承自Object,数组也一样.所以数组本身也是个Class, 得到数组的Class自然也可以转回数组.
  */
 cl.getComponentType();
 /**
  * 返回构造器数组,包括超类的公有成员.
  */
 cl.getConstructors();
 /**
  * 返回方法数组,包括超类的公有成员.
  */
 cl.getMethods();
 /**
  * 返回域数组,包括超类的公有成员.
  */
 cl.getFields();
 /**
  * 返回全部构造器数组,无论是public/private还是protected,不包括超类的成员.
  */
 cl.getDeclaredConstructors();
 /**
  * 返回全部域数组,无论是public/private还是protected,不包括超类的成员.
  */
 cl.getDeclaredFields();
 /**
  * 返回全部方法数组,无论是public/private还是protected,不包括超类的成员.
  */
 cl.getDeclaredMethods();
 /**
  * 获取类前的修饰符
  */
 cl.getModifiers();
 }

このクラスの Class オブジェクトを使用して、このクラスのオブジェクトを作成できます。最も便利で速い方法は、newInstance() を呼び出すことです。デフォルトでは、引数なしのコンストラクターを呼び出してオブジェクトを返します。


Class cl = Class.forName("java.lang.String");

以下は、Constructor を使用してコンストラクターを取得してオブジェクトを作成する方法です:


String str = (String)(Class.forName("java.lang.String").newInstance());

クラスは情報クラスなので、それほど難しくありません。実行時にクラスを追跡し、クラスに関するすべての情報を把握します。

以上がJavaにおけるClassクラスの役割を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。