java.lang.Class 사용

java.lang.Class은 Java에서 중요한 클래스 중 하나이지만 Java 프로그래머는 거의 알아차리지 못합니다. 이 클래스에는 다음과 같은 여러 메서드가 있기 때문에 매우 유용합니다. getClass(), forName() 클래스를 로드하는 데 사용할 수 있으며 Oracle 및 MySQL 드라이버도 로드할 수 있습니다. ClassClass.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에서 배열의 인스턴스를 나타내는 데에도 사용됩니다.   동일    type과 동일한 차원은   동일    클래스  클래스. java.lang.Class - equals()을 사용하여 두 객체의 기한이 도래하는지 확인합니다. 동일  type 여부.

개체 java.lang.Class은 오브젝트의 유형을 설명하는 JVM에 의해 매번 작성됩니다. 동일한 클래스의 모든 인스턴스는 동일한 객체를 공유합니다 Class Class 메서드를 호출하여 getClass()입니다. 이 메서드는 java.lang.Object.

이 예제에서 다음과 비교하기 위해 다른 인스턴스를 만들었다고 가정합니다.

public static void main(String[] args) {

문자열 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 = 새로운 정수(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는 서로 다른 클래스의 인스턴스입니다.");
}
}
Runtime:

java.lang.String
java.lang.String
str1 및 str2는 동일한 클래스의 인스턴스입니다
java.lang.Integer
java.lang.Boolean
A와 B는 다른 클래스의 인스턴스
메서드가 필요합니다.  newInstance()forName() 런타임에 인스턴스화된 클래스의 이름을 알 수 없는 경우가 있기 때문에 이러한 메서드는 작업을 더 간단하게 만듭니다.

try {
/*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 블록
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO 자동 생성 catch block
e.printStackTrace();
}
런타임:

java.lang.String
String
java.lang.String
class의 유형을 테스트하는 다른 방법이 있습니다.
isEnum(): 유형이 열거형인 경우 true를 반환합니다.
isArray(): 유형이 array인 경우 true를 반환합니다.
isInstance(Object o): 클래스가 o.
isLocal(): 클래스가 로컬로 선언되면 true를 반환합니다.

String str1 = new String(); 
문자열[] 배열 = {"aa","bb","cc"};
문자열[] 배열2 = {"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.클래스  다음 방법을 사용하여 생성자, 속성, 메서드 및 인터페이스의 모든 목록을 표시할 수 있습니다.

java.lang.Class.getConstructors(): 클래스의 공용 생성자와 관련된 모든 생성자 객체를 포함하는 배열을 반환합니다. 클래스에 공용 생성자가 없거나 클래스가 array.

java.lang.Class.getMethods()클래스나 인터페이스에 선언된 메서드나 부모 클래스와 부모 인터페이스에서 상속된 메서드를 포함하여 클래스나 인터페이스의 모든 멤버 메서드를 포함하는 배열을 반환합니다. 클래스에 공용 메서드가 없거나 클래스가 array.

java.lang.Class.getInterfaces(): 이 메소드는 클래스에 의해 구현되거나 해당 객체에 의해 표현되는 인터페이스를 결정합니다. 그녀  클래스에 선언된 인터페이스 또는 부모 클래스에서 상속된 인터페이스를 포함하여 클래스의 모든 인터페이스를 포함하는 배열을 반환합니다. 클래스에 공용 인터페이스가 없거나 클래스가 배열인 경우 크기 0의 배열이 반환됩니다.

다음 코드와 같이 이 세 가지 메서드를 사용하는 것은 쉽습니다.

java.lang.Class button = Class.class.forName("javax.swing.JButton"); 

System.out.println("+button.getClass()의 생성자);
생성자 [] c = button.getClass().getConstructors();
for(정수 i=0; 나는< c. 길이; i++)
System.out.println(c[i]);

System.out.println("+button.getClass()의 인터페이스);
java.lang.Class [] 인터페이스 = button.getClass().getInterfaces();
for(정수 i=0; 나는< 인터페이스.길이; i++)
System.out.println(인터페이스[i]);

System.out.println("+button.getClass()의 메서드);
메서드[] m = button.getClass().getMethods();
for(정수 i=0; 나는< m.길이; i++)
System.out.println(m[i]);
이 코드를 실행하면 java.lang.String이므로 생성자 및 인터페이스 목록을 표시합니다.

javax.swing.JButton

javax.swing.JButton
interface java.io.Serializable
interface java.lang.reflect.GenericDeclaration
interface java.lang.reflect.Type
interface java.lang.reflect.AnnotatedElement
< br />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.Class java.lang.Class.getSuperclass()
public 네이티브 java.lang.Class java.lang.Class.getComponentType()
public java.lang.String java.lang.Class.toString()
public 네이티브 부울 java.lang.Class.isInstance(java.lang.Object)
public 네이티브 int java.lang.Class.getModifiers()
public 네이티브 부울 java.lang.Class.isInterface()
public 네이티브 부울 java.lang.Class.isArray()
public 네이티브 부울 java.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[]) throw 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()
public java.net.URL java.lang.Class.getResource (java.lang.String)
public 네이티브 java.lang.Object [] java.lang.Class.getSigners ()
public 부울 java.lang.Class.isAnnotation ()
public 부울 java.lang.Class.isEnum ()
public 부울 java.lang.Class.isLocalClass ()
public 부울 java.lang.Class.isSynthetic ()
public java.lang.Object java.lang.Class.newInstance ()는 java.lang.InstantiationException 을 발생시킵니다. java.lang.IllegalAccessException
public 부울 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()
public java.lang.reflect.Constructor java.lang.Class.getConstructor (java.lang.Class [])는 java.lang.NoSuchMethodException, java.lang.SecurityException
public java.lang.reflect.Constructor [] java.lang.Class.getConstructors ()는 java.lang.SecurityException
public java.lang.annotation.Annotation [] java.lang.Class.getDeclaredAnnotations ()
public java.lang.Class [] java.lang.Class.getDeclaredClasses ()는 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[]) throw java.lang.NoSuchMethodException,java.lang.SecurityException
public java.lang.reflect.Method[] java.lang.Class.getDeclaredMethods() throws java.lang.SecurityException
public native java.lang.Class java.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()
public java.lang.reflect.Type java.lang.Class.getGenericSuperclass()
public 네이티브 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 부울 java.lang.Class.isAnnotationPresent(java.lang.Class)
public 부울 java.lang.Class.isAnonymousClass()
public 부울 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() throws java.lang.InterruptedException
public 부울 java.lang.Object.equals(java.lang.Object)
public native int java.lang.Object.hashCode()
public 최종 네이티브 java.lang.Class java.lang.Object.getClass()
public 최종 네이티브 무효 java.lang.Object.notify()
public 최종 네이티브 무효 java.lang.Object.notifyAll()
References:
Javadoc: java.lang.Class