[자바] 문법 문의 드려요

조회수 1032회

private static Logger logger = Logger.getLogger(CopyUtil.class); 이런 코드를 보았는데요 혹시 문법적으로 이해 안가는 부분이 있어서 문의드립니다.

'CopyUtil.class' 이런식으로 xxx.class를 인자를 던진다는게 class 파일을 인자로 전달하는게 맞나요 문법적으로 어떻게 이해하면 되는지 궁금합니다.

문법적으로 설명 해주시면 감사하겟습니다.

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 자바의 Reflection API를 제공합니다. Reflection은 자기 자신의 코드를 조회할 수 있는 방법을 제공하는 것이라고 생각하면됩니다. 클래스안에 메서드가 어떤 것이 있는지, 함수는 어떤 인자로 되어있는지를 프로그래밍 API를 통해서 모두 접근이 가능합니다.

    그래서 자바에서는 Class도 하나의 타입입니다.

    CopyUtil.class 는 Class의 인스턴스가 됩니다.

    첨언.

    자바에서 Logger 이름을 쓸 때, 많이 사용하는 이름이 해당하는 클래스이름을 사용하는 것이 관례입니다. 따라서 클래스 이름(패키지명 포함)을 Logger 이름으로 사용하는 것이 좋은 것입니다.

    위의 로거 팩토리 패턴에서 XXX.class를 넘기면 내부적으로 Class의 Reflection API를 이용해서 자동으로 Logger이름을 추출하는 행위를 하게 됩니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)