룽쓰의 개발도구

MVC 모델을 만들면서, Class.forName(); 본문

질문노트

MVC 모델을 만들면서, Class.forName();

디벨로퍼룽쓰 2021. 4. 26. 14:34

WEB과 자바를 연결하고, 자바와 DB(Oracle)을 연결하면서 단 한 번도 궁금해하지 않았던 게 있다.

Class.forName() 메서드는 대체 뭘까? 도대체 뭐길래 계속 쓰고 있는 것일까?

그 해답은 생각보다 쉬웠지만 그걸 알아보려고 노력하지 않았던 나의 과거가 아쉽다.

 

Class<?> handlerClass = Class.forName(handlerClassName);

CommandHandler handlerInstance = (CommandHandler)handlerClass.newInstance();
commandHandlerMap.put(command, handlerInstance);

예를 들어 위와 같은 코드가 있다고 생각해보자.

여기서 handlerClassName은 CommandHandler 인터페이스를 구현한 클래스이다.

즉, Class.forName() 메서드는 괄호 안에 있는 이름을 가진 Class를 찾아오겠다는 것이고, 두 번째 줄을 통해서 다형성을 이루면서 새로운 객체를 하나 생성했다.

그리고 Map계열인 commandHandlerMap에 <String, Command> 문자열과 커맨드 객체를 삽입해서 추가할 수 있었다.