Java Reflection 복습

참조 주소 : https://docs.oracle.com/javase/7/docs/api/java/lang/reflect/package-summary.html

Spring Container , Java Bean Factory 에 사용되는 기술로서 위에 페이지에 들어가면 첫줄은 다음과 같이 나온다.

Provides classes and interfaces for obtaining reflective information about classes and objects.

말 그대로 클래스 또는 인터페이스에 대한 정보를 주는 것이다.

자바 reflection의 성능과 용도는 왈가왈부한것 같습니다. 자세히 공부해보고 성능이나 타 이슈에 대해서 작성하겠습니다.

우선 다음과 같이 class내부의 정보를 받아오는 것을 작성해보았습니다.

package me.ggikko;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

/**
* Created by Park Ji Hong, ggikko.
*/
public class ProcessorClass implements TestInterface {

public String field;
public String ggikko;

public void ggikko(){

};

public static void main(String[] args) throws NoSuchMethodException, NoSuchFieldException {

Method[] methods = ProcessorClass.class.getMethods();

for(Method method : methods){
System.out.printf("\n --------------- \n");
System.out.printf("method name : " + method.getName());
System.out.printf("\n --------------- \n");
}

Class processorClass = ProcessorClass.class;
System.out.printf("\n --------------- \n");
System.out.printf("getName : " + processorClass.getName());
System.out.printf("\n --------------- \n");
System.out.printf("getMethod : " + processorClass.getMethod("ggikko"));
System.out.printf("\n --------------- \n");
Field[] fields = processorClass.getFields();
System.out.printf("getFiled : " + fields[1]);
System.out.printf("\n --------------- \n");
}

}

class name, field, method info 등 다양한 정보를 가져올 수 있습니다.

이와 같이 Api doc 을 보면 자세히 나와있습니다.

다음과 같이 간단하게 사용하여 reflection API를 사용해 볼 수 있습니다.

이거는 아주 간단한 부분이고 더 나아가 reflection을 사용하여 Generic, Dynamic proxy 등을 공부해서 더 업데이트 하겠습니다.