package reflection.data;
public class BasicData {
public String publicField;
private int privateField;
public BasicData() {
System.out.println("BasicData.BasicData");
}
private BasicData(String data) {
System.out.println("BasicData.BasicData: " + data);
}
public void call() {
System.out.println("BasicData.call");
}
public String hello(String str) {
System.out.println("BasicData.hello");
return str + " hello";
}
private void privateMethod() {
System.out.println("BasicData.privateMethod");
}
void defaultMethod() {
System.out.println("BasicData.defaultMethod");
}
protected void protectedMethod() {
System.out.println("BasicData.protectedMethod");
}
}
- BasicV1
package reflection;
import reflection.data.BasicData;
public class BasicV1 {
public static void main(String[] args) throws ClassNotFoundException {
// 클래스 메타데이터 조회 방법 3가지
// 1. 클래스에서 찾기
Class<BasicData> basicDataClass1 = BasicData.class;
System.out.println("basicDataClass1 = " + basicDataClass1);
// 2. 인스턴스에서 찾기
BasicData basicInstance = new BasicData();
Class<? extends BasicData> basicDataClass2 = basicInstance.getClass();
System.out.println("basicDataClass2 = " + basicDataClass2);
// 3. 문자로 찾기
String className = "reflection.data.BasicData"; // 패키지명 주의
Class<?> basicDataClass3 = Class.forName(className);
System.out.println("basicDataClass3 = " + basicDataClass3);
}
}
- BasicV2
package reflection;
import reflection.data.BasicData;
import java.lang.reflect.Modifier;
import java.util.Arrays;
public class BasicV2 {
public static void main(String[] args) {
Class<BasicData> basicData = BasicData.class;
System.out.println("basicData.getName() = " + basicData.getName());
System.out.println("basicData.getSimpleName() = " + basicData.getSimpleName());
System.out.println("basicData.getPackage() = " + basicData.getPackage());
System.out.println("basicData.getSuperclass() = " + basicData.getSuperclass());
System.out.println("basicData.getInterfaces() = " + Arrays.toString(basicData.getInterfaces()));
System.out.println("basicData.isInterface() = " + basicData.isInterface());
System.out.println("basicData.isEnum() = " + basicData.isEnum());
System.out.println("basicData.isAnnotation() = " + basicData.isAnnotation());
int modifiers = basicData.getModifiers();
System.out.println("basicData.getModifiers() = " + modifiers);
System.out.println("isPublic = " + Modifier.isPublic(modifiers));
System.out.println("Modifier.toString() = " + Modifier.toString(modifiers));
}
}
'개발이 좋아서 > Java가 좋아서' 카테고리의 다른 글
리플렉션 - 필드 탐색과 값 변경 (0) | 2024.12.01 |
---|---|
리플렉션 - 메서드 탐색과 동적 호출 (0) | 2024.12.01 |
HTTP 기본 이론(간단 요약) (1) | 2024.12.01 |
네트워크 예외4 - 강제 종료 (0) | 2024.11.30 |
네트워크 예외3 - 정상 종료 (0) | 2024.11.30 |