java.lang.Class の使用
java.lang.Classは、Javaの重要なクラスの1つですが、Javaプログラマーが気付くことはめったにありません。このクラスは、次のようないくつかのメソッドがあるため、非常に便利です。getClass(), forName()は、クラスをロードするために使用でき、OracleおよびMySQLドライバをロードすることもできます。Class には、Class.newInstance() を使用すると、new() です。java.lang.Classにはパブリックコンストラクタがなく、そのインスタンスはロード時にJVMによって作成されます。クラス Class は、実行中の Java アプリケーションのクラス、列挙型、インターフェイス、および注釈を表すためにも使用されます。プリミティブ型 byte、short、char、int、float、double、boolean は、java.lang.Classです。インスタンス Class は int.class, float.class または boolean.classです。このクラスは、Javaで配列のインスタンスを表すためにも使用されます。各絵画には 同じ タイプと同じディメンションが 同じ のインスタンス クラス クラススパン>。java.lang.Class (equals() 2 つのオブジェクトが期限かどうかをチェックします。同じ type かどうか.オブジェクト java.lang.Class は、オブジェクトの型を記述する JVM によって毎回作成されます。同じクラスのすべてのインスタンスは、同じオブジェクトを共有します Class オブジェクトClass メソッド getClass()です。このメソッドは java.lang.Object.
この例では、異なるインスタンスを作成して、それらを以下と比較したとします:
public static void main(String[] args) {Runtime:
String str1 = new String(), str2 = new String();
System.out.println(str1.getClass().getName());
System.out.println(str2.getClass().getName());
if(str1.getClass().equals(str2.getClass()))){
System.out.println("str1 と str2 は同じクラスのインスタンスです");
}else{
System.out.println("str1 と str2 は異なるクラスのインスタンスです");
}
整数 A = new Integer(1);
ブール値 B = new Boolean(true);
System.out.println(A.getClass().getName());
System.out.println(B.getClass().getName());
if(A.getClass().equals( B.getClass())){
System.out.println("A と B は同じクラスのインスタンスです");
}else{
System.out.println("A と B は異なるクラスのインスタンスです");
}
}
java.lang.Stringメソッドが必要です newInstance() および forName() 実行時にインスタンス化されたクラスの名前がわからない場合があるため、これらのメソッドを使用すると作業が簡単になります.
java.lang.String
str1 と str2 は同じクラスのインスタンスです
java.lang.Integer
java.lang.Boolean
A と B は異なるクラスのインスタンス
try {Runtime:
/*newInstance() new String()*/
String と同等 str2 = str1.getClass().newInstance();
System.out.println(str2.getClass().getName());
System.out.println(str2.getClass().getSimpleName());
System.out.println(str2.getClass().getCanonicalName());
} catch (InstantiationException e) {
// TODO 自動生成された catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO 自動生成された catch block
e.printStackTrace();
}
java.lang.Stringクラスの型をテストする方法は他にもあります:
String
java.lang.String
isEnum(): 型が列挙型の場合に true を返します.
isArray(): 型が配列の場合は true を返します.
isInstance(Object o): クラスが o.
isLocal(): クラスがローカルで宣言されている場合は true を返します
String str1 = new String();
String[] array = {"aa","bb","cc"};
String[] array2 = {"fd","be","ce"};
System.out.println(array.getClass().isArray());true
System.out.println(array.getClass().isInstance(array2));true
System.out.println(array.getClass().isLocalClass());false
クラスのコンストラクタ、インターフェイス、およびメソッドを取得します
java.lang.Class 次のメソッドを使用して、コンストラクタ、属性、メソッド、およびインターフェイスのすべてのリストを表示できることです:java.lang.Class.getConstructors(): クラスのパブリックコンストラクタに関連するすべてのコンストラクタオブジェクトを含む配列を返します。クラスにパブリックコンストラクタがない場合、またはクラスが配列の場合は、サイズ 0 の配列が返されます.
java.lang.Class.getMethods(): は、クラスまたはインタフェースで宣言されたもの、または親クラスおよび親インタフェースから継承されたものを含む、クラスまたはインタフェースのすべてのメンバー・メソッドを含む配列を返します。クラスにパブリックメソッドがない場合、またはクラスが配列の場合は、サイズ 0 の配列が返されます.
java.lang.Class.getInterfaces(): このメソッドは、クラスによって実装されるインタフェース、またはそのオブジェクトによって表されるインタフェースを決定します。彼女 クラスで宣言されたインターフェイスや親クラスから継承されたインターフェイスなど、クラス内のすべてのインターフェイスを含む配列を返します。クラスにパブリック・インタフェースがない場合、またはクラスが配列の場合は、サイズ 0 の配列が返されます.
次のコードに示すように、これら 3 つのメソッドを使用するのは簡単です:
java.lang.Class button = Class.class.forName("javax.swing.JButton");このコードを実行すると、java.lang.Stringなので、コンストラクタとインタフェースのリストだけを表示します
System.out.println("+button.getClass()"のコンストラクタ);
コンストラクタ>[] c = button.getClass().getConstructors();
for(int i=0;私はSystem.out.println(c[i]);
System.out.println("+button.getClass()のインタフェース);
java.lang.Class>[] interfaces = button.getClass().getInterfaces();
for(int i=0;私はSystem.out.println(interfaces[i]);
System.out.println("+button.getClass()のメソッド);
Method[] m = button.getClass().getMethods();
for(int i=0;私はSystem.out.println(m[i]);
javax.swing.JButtonReferences:
javax.swing.JButton
interface java.io.Serializable
interface java.lang.reflect.GenericDeclaration
interface java.lang.reflect.Type
interface java.lang.reflect.AnnotatedElement
Class メソッド javax.swing.JButton
public static java.lang.Class java.lang.Class.forName(java.lang.String,boolean,java.lang.ClassLoader) throws java.lang.ClassNotFoundException
public static java.lang.Class java.lang.Class.forName(java.lang.String) throws java.lang.ClassNotFoundException
public native boolean java.lang.Class.isAssignableFrom(java.lang.Class)
public native java.lang.Classjava.lang.Class.getSuperclass()
public native java.lang.Class java.lang.Class.getComponentType()
public java.lang.String java.lang.Class.toString()
public native boolean java.lang.Class.isInstance(java.lang.Object)
public native int java.lang.Class.getModifiers()
public native boolean java.lang.Class.isInterface()
public native boolean java.lang.Class.isArray()
public native booleanjava.lang.Class.isPrimitive()
public java.lang.String java.lang.Class.getName()
public java.lang.Class java.lang.Class.asSubclass(java.lang.Class)
public java.lang.Object java.lang.Class.cast(java.lang.Object)
public java.lang.Class[] java.lang.Class.getClasses()
public java.lang.Reflect.Field java.lang.Class.getField(java.lang.String) throws java.lang.NoSuchFieldException,java.lang.SecurityException
public java.lang.reflect.Field[] java.lang.Class.getFields() throws java.lang.SecurityException
public java.lang.reflect.Method java.lang.Class.getMethod(java.lang.String,java.lang.Class[]) throws java.lang.NoSuchMethodException,java.lang.SecurityException
public java.lang.reflect.Method[] java.lang.Class.getMethods() throws java.lang.SecurityException
public java.lang.Package java.lang.Class.getPackage()
publicjava.net.URL java.lang.Class.getResource(java.lang.String)
public native java.lang.Object[] java.lang.Class.getSigners()
public boolean java.lang.Class.isAnnotation()
public boolean java.lang.Class.isEnum()
public boolean java.lang.Class.isLocalClass()
public boolean java.lang.Class.isSynthetic()
public java.lang.Object java.lang.Class.newInstance() throws java.lang.InstantiationException,java.lang.IllegalAccessException
public boolean java.lang.Class.desiredAssertionStatus()
public java.lang.annotation.Annotation java.lang.Class.getAnnotation(java.lang.Class)
public java.lang.annotation.Annotation[] java.lang.Class.getAnnotations()
public java.lang.String java.lang.Class.getCanonicalName()
public java.lang.ClassLoader java.lang.Class.getClassLoader()
publicjava.lang.reflect.Constructor java.lang.Class.getConstructor(java.lang.Class[]) throws java.lang.NoSuchMethodException,java.lang.SecurityException
public java.lang.reflect.Constructor[] java.lang.Class.getConstructors() throws java.lang.SecurityException
public java.lang.annotation.Annotation[] java.lang.Class.getDeclaredAnnotations()
public java.lang.Class[] java.lang.Class.getDeclaredClasses() throws java.lang.SecurityException
public java.lang.reflect.Constructor java.lang.Class.getDeclaredConstructor(java.lang.Class[]) throws java.lang.NoSuchMethodException,java.lang.SecurityException
public java.lang.reflect.Constructor[] java.lang.Class.getDeclaredConstructors() throws java.lang.SecurityException
public java.lang.reflect.Field java.lang.Class.getDeclaredField(java.lang.String) throws java.lang.NoSuchFieldException,java.lang.SecurityException
public java.lang.reflect.Field[] java.lang.Class.getDeclaredFields() throws java.lang.SecurityException
public java.lang.reflect.Method java.lang.Class.getDeclaredMethod(java.lang.String,java.lang.Class[]) throws java.lang.NoSuchMethodException,java.lang.SecurityException
public java.lang.reflect.Method[] java.lang.Class.getDeclaredMethods() throws java.lang.SecurityException
public native java.lang.Classjava.lang.Class.getDeclaringClass()
public java.lang.Class java.lang.Class.getEnclosingClass()
public java.lang.reflect.Constructor java.lang.Class.getEnclosingConstructor()
public java.lang.reflect.Method java.lang.Class.getEnclosingMethod()
public java.lang.Object[] java.lang.Class.getEnumConstants()
public java.lang.reflect.Type[] java.lang.Class.getGenericInterfaces()
publicjava.lang.reflect.Type java.lang.Class.getGenericSuperclass()
public native java.lang.Class[] java.lang.Class.getInterfaces()
public java.security.ProtectionDomain java.lang.Class.getProtectionDomain()
public java.io.InputStream java.lang.Class.getResourceAsStream(java.lang.String)
public java.lang.String java.lang.Class.getSimpleName()
public java.lang.reflect.TypeVariable[] java.lang.Class.getTypeParameters()
public boolean java.lang.Class.isAnnotationPresent(java.lang.Class)
public boolean java.lang.Class.isAnonymousClass()
public boolean java.lang.Class.isMemberClass()
public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException
public final native void java.lang.Object.wait(long) throws java.lang.InterruptedException
public final void java.lang.Object.wait() throwsjava.lang.InterruptedException
public boolean java.lang.Object.equals(java.lang.Object)
public native int java.lang.Object.hashCode()
public final native java.lang.Class java.lang.Object.getClass()
public final native void java.lang.Object.notify()
public final native void java.lang.Object.notifyAll()
Javadoc: java.lang.Class