구체적인 클래스 타입을 알지 못해도 그 클래스의 메소드, 타입, 변수들에 접근할 수 있도록 해주는 자바 기본 API
사용방법만 알면 라이브러리를 추가할 필요 없이 사용할 수 있다.
컴파일 시간이 아니라 실행 시간에 동적으로 특정 클래스의 정보를 객체화하여 분석 및 추출해낼 수 있는 프로그래밍 기법
프레임워크나 IDE에서 이런 동적인 바인딩을 이용한 기능을 제공한다. intelliJ의 자동완성 기능, 스프링의 어노테이션이 리플렉션을 이용한 기능이다.
main 메소드
결과
코드 쳐보면서 느낀건 lombok @Getter, @Setter 어노테이션도 reflection을 활용해서 만들 수 있겠다고 생각이 들었다..!💡 그리고 private 변수도 접근이 그냥 가능하다는게 신기했다. 기껏 접근 못하게 막아놨는데 reflection을 사용해서 접근이 가능한거잖아....? 찾아보니 이러한 점때문에 무분별하게 reflection을 사용하는 것은 좋지 않다고 한다. 되도록이면 사용하지말자. 이러한 것이 있다는 것을 아는게 목표였으니 그럼 됐다!
https://velog.io/@yeon/Reflection이란
https://codechacha.com/ko/reflection/
https://madplay.github.io/post/java-reflection