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 클래스
private static void exam01() throws Exception {
// Dog 클래스의 메서드 정보
Class clz = Dog.class;
// Dog 클래스의 모든 메서드 정보 조회하기
Method[] mArr = clz.getDeclaredMethods();
for(Method m : mArr) {
System.out.println("-------------------------------------------------");
System.out.println("이름 : " + m.getName()); // 메서드 이름, getName()
Class rClz = m.getReturnType(); // 메서드 반환타입, getReturnType()
System.out.println("반환타입 : " + rClz.getSimpleName());
System.out.println("파라미터 정보");
Parameter[] pArr = m.getParameters(); // 파라미터 정보, getParameters()
for (Parameter p : pArr) {
Type t = p.getParameterizedType();
System.out.println("파라미터 타입 : " + t.getTypeName() + ", 파라미터 이름 : " + p.getName()); // 파라미터 타입, getTypeName()
}
}
}
exam02 클래스
private static void exam02() throws Exception {
Class clz = Dog.class;
// Dog 클래스의 특정 메서드 정보 조회하기, getDeclaredMethods(클래스명, 매개변수타입(생략가능))
// public String getName();
//Method m = clz.getDeclaredMethod("getName");
// 매개변수가 String 일 경우, String.class
// public String setName();
// Method m = clz.getDeclaredMethod("setName", String.class);
// public String setAge();
Method m = clz.getDeclaredMethod("setAge", int.class);
System.out.println("이름 : " + m.getName());
Parameter[] pArr = m.getParameters();
for (Parameter p : pArr) {
Type t = p.getParameterizedType();
System.out.println("파라미터 타입 : " + t.getTypeName() + ", 파라미터 이름 : " + p.getName());
}
System.out.println("-------------------------------------------------");
/*
Method[] mArr = clz.getDeclaredMethods();
for(Method m : mArr) {
System.out.println("-------------------------------------------------");
System.out.println("이름 : " + m.getName());
Class rClz = m.getReturnType();
System.out.println("반환타입 : " + rClz.getSimpleName());
System.out.println("파라미터 정보");
Parameter[] pArr = m.getParameters();
for (Parameter p : pArr) {
Type t = p.getParameterizedType();
System.out.println("파라미터 타입 : " + t.getTypeName() + ", 파라미터 이름 : " + p.getName());
}
}
*/
}
quiz01 클래스 - ArrayList에 있는 메서드 중에서 "i"로 시작하는 메서드의 이름을 화면에 출력
private static void quiz01() throws Exception {
// ArrayList 클래스의 Class 객체 얻기
Class clz = ArrayList.class;
// Class 객체에서 모든 메서드 조회하기
Method[] mArr = clz.getDeclaredMethods();
// 메서드를 반복하면서 메서드의 이름이 i로 시작하는지 체크하고 출력
for(Method m : mArr) {
if(m.getName().startsWith("i")) {
System.out.println(m.getName());
}
}
}
quiz02 클래스 - Dog 클래스의 메서드 중에서 반환타입이 void이고 set으로 시작하는 메서드의 이름을 화면에 출력
private static void quiz02() throws Exception {
// ArrayList 클래스의 Class 객체 얻기
Class clz = Dog.class;
// Class 객체에서 모든 메서드 조회하기
Method[] mArr = clz.getDeclaredMethods();
// 메서드를 반복하면서 메서드의 이름이 set으로 시작고, 반환타입이 void인지 확인
for(Method m : mArr) {
//Class rClz = m.getReturnType();
//if(m.getName().startsWith("set") && rClz.getSimpleName().equals("void")) {
if(m.getName().startsWith("set") && m.getReturnType() == void.class) {
System.out.println(m.getName());
}
}
}
main 소스
public static void main(String[] args) {
try {
System.out.println("============ exam01 ============");
exam01();
System.out.println("============ exam02 ============");
exam02();
System.out.println("============ quiz01 ============");
quiz01();
System.out.println("============ quiz02 ============");
quiz02();
} catch(Exception e) {
e.printStackTrace();
}
}
결과
============ exam01 ============
-------------------------------------------------
이름 : getName
반환타입 : String
파라미터 정보
-------------------------------------------------
이름 : setName
반환타입 : void
파라미터 정보
파라미터 타입 : java.lang.String, 파라미터 이름 : arg0
-------------------------------------------------
이름 : setAge
반환타입 : void
파라미터 정보
파라미터 타입 : int, 파라미터 이름 : arg0
-------------------------------------------------
이름 : getAge
반환타입 : int
파라미터 정보
============ exam02 ============
이름 : setAge
파라미터 타입 : int, 파라미터 이름 : arg0
-------------------------------------------------
============ quiz01 ============
indexOf
isEmpty
iterator
============ quiz02 ============
setName
setAge
Java - Properties (JAVA) (0) | 2018.10.12 |
---|---|
Java - 리플렉션을 이용한 객체 생성 (0) | 2018.10.12 |
Java - 리플렉션 (reflect) (0) | 2018.10.08 |
Java - ServerSocket, 클라이언트에 응답하기 (0) | 2018.10.04 |
Java - ServerSocket, Thread를 적용한 에코메시지 테스트 (0) | 2018.10.04 |
댓글 영역