Dog 클래스
public class Dog {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
exam01 클래스
// 리플렉션을 이용한 객체 생성하기
public static void exam01() throws Exception {
// Dog d = new Dog();
Class clz = Dog.class;
// 객체 생성하기
//Object obj = clz.newInstance(); // 1.9 부터 비권장처리 (deprecated)
Object obj = clz.getDeclaredConstructor().newInstance(); // Declared 가 들어가는건 자기것만사용, 부모에게 접근X, 매개변수가 없는 생성자 생성
Dog d = (Dog)obj;
d.setName("리플렉션 테스트");
System.out.println(d.getName());
}
exam02 클래스
// 리플렉션을 이용한 메서드 실행하기
private static void exam02() throws Exception {
/*
Dog d = new Dog();
d.setName("a");
System.out.println(d.getName());
*/
Class clz = Dog.class;
Object obj = clz.newInstance(); // obj == d
// setNae 메서드 추출
Method m = clz.getDeclaredMethod("setName", String.class); // m = setName
// 메서드 실행하기
m.invoke(obj, "쫑"); // d.setName("쫑")
// System.out.println(d.getName());
m = clz.getDeclaredMethod("getName"); // mGet = getName
System.out.println(m.invoke(obj)); // System.out.pringln(d.getName());
}
main 소스
public static void main(String[] args) {
try {
exam01();
exam02();
} catch (Exception e) {
e.printStackTrace();
}
}
결과
리플렉션 테스트
쫑
Java - 어노테이션 (Annotation) (0) | 2018.10.12 |
---|---|
Java - Properties (JAVA) (0) | 2018.10.12 |
Java - 리플렉션, 클래스의 메서드 정보 확인 (0) | 2018.10.12 |
Java - 리플렉션 (reflect) (0) | 2018.10.08 |
Java - ServerSocket, 클라이언트에 응답하기 (0) | 2018.10.04 |
댓글 영역