DevBoi

[Java] Reflection 개념 및 사용법 본문

Language/[Java]

[Java] Reflection 개념 및 사용법

HiSmith 2022. 3. 29. 13:25
반응형

<리플렉션 개념 및 장점>

리플렉션은 구체적인 클래스 타입을 알지 못해도, 그 클래스의 메소드와 타입 그리고 변수들을 접근 할수 있도록 해주는 자바 API 이다.

런타임에 지금 실행되고 있는 클래스를 가져와서 실행해야하는 경우

동적으로 객체를 생성하고 메소를 호출하는 방법

클래스,인터페이스,메소드 들을 찾을 수 있고, 객체를 생성하거나 변수를 변경하거나 메소드를 호출할 수 있다.

 

<리플렉션 단점>

-컴파일 타임 타입검사가 주는 이점을 누릴수 없다.

-리플렉션을 이용하면 코드가 장황해지고 지저분해진다.

-성능이 떨어진다. (리플렉션을 통한 메서드 호출은 일반 메서드 호출보다 훨씬 느리다.)

 

<리플렉션 주의점>

쉽게말하면, 특수한 시스템을 만들때는 강력하나, 컴파일 타임에서 명확한 객체를 사용하지 못해 독이 될수 있다.

따라서 되도록이면 인스턴스 생성에만 리플렉션을 쓰고,

생성된 인스턴스를 이용할때는 인터페이스나 상위클래스로 참조하여 사용되도록 해야한다.

ex. Member m1 = obj;

Member는 타입이 정해진 상위 클래스, obj는 프록시를 통해 생성된 객체

 

<리플렉션 사용 예시>

리플렉션은 , JDK dynamic proxy, 스프링 Bean 주입을 할때 쓰인다.

 

반응형

'Language > [Java]' 카테고리의 다른 글

[Java] Enum 클래스  (0) 2022.03.29
[Java] singleTon 디자인 패턴  (0) 2022.03.29
[Java] LinkedList  (0) 2022.03.29
[Java] Vetor 개념 및 사용 방법  (0) 2022.03.29
[Java] Wrapper 클래스  (0) 2022.03.29