クラスクラスは、Java言語の特定のクラスを定義する実装です。クラスの定義には、メンバー変数、メンバーメソッド、このクラスによって実装されたインターフェイス、およびこのクラスの親クラスが含まれます。クラスクラスのオブジェクトは、現在実行されているJavaアプリケーションのクラスとインターフェイスを表すために使用されます。たとえば、各配列はクラスクラスオブジェクトに属し、同じ要素タイプとディメンションを持つすべての配列がクラスオブジェクトを共有します。基本的なJavaタイプ(Boolean、Byte、Char、Short、int、long、float、double)およびvoid型もクラスオブジェクトとして表現できます。
次の例では、クラスオブジェクトを使用して、オブジェクトのクラス名を表示します。
void printclassname(object obj){system.out.println( " + obj +"のクラスは " + obj.getclass()。getname()); }私たちは皆、すべてのJavaクラスがオブジェクトクラスを継承することを知っています。オブジェクトクラスにはメソッド:getClass()があります。この方法は、インスタンス化されたオブジェクトのクラスへの参照を取得するために使用されます。この参照は、クラスクラスのオブジェクトを指しています(Hehe、少し厄介です)。クラスオブジェクト(コンストラクタープライベート)を生成することはできません。このクラスクラスのオブジェクトは、さまざまなクラスが呼び出される場合、またはクラスローダーのDefineClassメソッドによって生成されたときにJava仮想マシンによって自動的に作成されます。生成するオブジェクトには、クラスクラスのオブジェクトの位置を記録するフィールドがあります。下の図に示すように:
各クラスオブジェクトを多くのクラスのプロキシとして扱うことができます。さらに、各クラスのオブジェクトには、参照するクラスを記録するクラスローダーがあります。このフィールドがnullの場合、クラスのローダーがブートストラップローダーであることを意味します。特定の理由から、以前に共有した記事「クラスローダー作業メカニズム」を参照してください。
Javaには複数のローダーがあり、各ローダーが複数のクラスをロードできることを知っているため、クラスクラスオブジェクトを取得する限り、getClassLoader()メソッドを使用してクラスローダーへの参照を取得できます。
JVMは、各タイプのマネージャーに固有のクラスオブジェクトです。したがって、Biequal演算子を使用してオブジェクトを比較できます。A1.getClass()== A.Class;返されるべきものは真実です。
forname(string classname)and forname(stringclassname、{ *} boolean initialze、 *classloader *loader) *メソッド。
このメソッドは、対応するクラスオブジェクトを指定された文字列名で返します。クラスまたはインターフェイスのフルパス名を考えると、このメソッドはクラスを見つけ、ロードし、接続しようとします。成功した場合は、このクラスのオブジェクトを返します。それ以外の場合は、classNotFoundExceptionの例外をスローします。たとえば、次のコードスニペットは、java.lang.threadという名前のランニングクラス記述子を返します。 classst = class.forname( "java.lang.thread");この方法では、クラスローダーを指定する必要があります。 1つの文字列パラメーターのみでforNameメソッドを使用する場合、クラスオブジェクトは現在のクラスローダーをデフォルトでローダーとして呼び出し、2番目のパラメーターをtrueに設定します。 2番目のパラメーターの説明:falseの場合、fornameメソッドを呼び出すと、コマンドクラスローダーにクラスのみをロードし、クラスの静的ブロックを初期化しません。静的ブロックは、クラスが初めてインスタンス化された場合にのみ呼び出されます。 Trueの場合、静的ブロックはロード時に呼び出されます。
getClassLoader()
このクラスのクラスローダーを取得します。
getComponentType()
現在のクラスが配列を表す場合、配列のコンポーネントを表すクラスオブジェクトを返します。それ以外の場合は、nullを返します。
getConstructor(class [])
現在のクラスオブジェクトで表されるクラスの指定されたパブリックコンストラクターチャイルドオブジェクトを返します。
getConstructors()
現在のクラスオブジェクトで表されるクラスのすべてのパブリックコンストラクターサブオブジェクトの配列を返します。
getDeclaredConstructor(class [])
現在のクラスオブジェクトで表されるクラスで指定されたコンストラクターサブオブジェクトを返します。
getDecLaredConstructors()
現在のクラスオブジェクトで表されるクラスのすべての指定されたコンストラクターサブオブジェクトの配列を返します。
GetDeclaredField(文字列)
現在のクラスオブジェクトで表されるクラスまたはインターフェイスに指定されたドメインオブジェクトを返します。
getDeclaredFields()
現在のクラスオブジェクトで表されるクラスまたはインターフェイスのすべての定められたドメインオブジェクトの配列を返します。
getDeclaredMethod(string、class [])
現在のクラスオブジェクトで表される指定されたクラスまたはインターフェイスに指定されたメソッドオブジェクトを返します。
getDecLaredMethods()
クラスオブジェクトで表されるクラスまたはインターフェイスのすべての指定されたメソッドの配列を返します。
getfield(文字列)
現在のクラスオブジェクトで表されるクラスまたはインターフェイスの指定されたパブリックメンバードメインオブジェクトを返します。
getFields()
現在のクラスオブジェクトで表されるクラスまたはインターフェイスのアクセス可能なパブリックドメインオブジェクトの配列を返します。
getInterfaces()
現在のオブジェクトまたはインターフェイスで表されるクラスによって実装されたインターフェイスを返します。
getMethod(string、class [])
現在のクラスオブジェクトで表されるクラスまたはインターフェイスの指定された公開メソッドオブジェクトを返します。
getMethods()
親クラスから宣言および継承された宣言および継承を含む、現在のクラスオブジェクトで表されるクラスまたはインターフェイスのすべてのパブリックメンバーメソッドオブジェクトの配列を返します。
getModifiers()
クラスまたはインターフェイスのJava言語モディファイアコードを返します。
getname()
クラスオブジェクトで表されるタイプ(クラス、インターフェイス、配列、またはベースタイプ)のフルパス名文字列を返します。
getResource(文字列)
指定された名前でリソースを見つけます。
getResourceasStream(文字列)
指定された名前のリソースを見つけます。
getsigners()
クラスタグを取得します。
getSuperclass()
このオブジェクトがオブジェクト以外のクラスを表す場合、このオブジェクトの親クラスオブジェクトが返されます。
isarray()
クラスオブジェクトが配列を表す場合はtrueを返し、それ以外の場合はfalseを返します。
isassignablefrom(class)
クラスオブジェクトで表されるクラスまたはインターフェイスが、パラメーターで指定されたクラスで表されるクラスまたはインターフェイスと同じであるか、その親クラスであるかを決定します。
ISINSTANCE(オブジェクト)
この方法は、Java言語での操作の場合の動的な同等の方法です。
ISINTERFACE()
指定されたクラスオブジェクトがインターフェイスタイプを表すかどうかを決定します。
isprimitive()
指定されたクラスオブジェクトがJavaベースタイプを表すかどうかを決定します。
newinstance()
クラスの新しいインスタンスを作成します。
toString()
オブジェクトを文字列に変換します。
要約します
上記は、Javaのクラスクラスについて簡単に議論することについてのこの記事の内容全体であり、誰にとっても役立つことを願っています。興味のある友人は、このサイトの他の関連トピックを引き続き参照できます。欠点がある場合は、それを指摘するためにメッセージを残してください。このサイトへのご支援をありがとうございました!