Java에서 필요한 메서드를 찾을 때, 사용하고 있는 클래스의 문서를 참고하면 어떠한 메서드들이 있는지 알 수 있습니다.
여기서 말하는 문서란 Java의 공식 문서이며, Oracle에서 Java 버전별로 클래스의 문서를 제공하고 있습니다.
해당 문서를 검색하는 방법은 구글에 간단하게 "Java String doc" 이런 식으로 검색하시면 해당 클래스에 대한 문서가 나옵니다.
위 이미지처럼 구글링 시 나오는 페이지 중 Oracle Help Center 페이지를 참고하시면 됩니다.
URL로는 docs.oracle.com인 사이트입니다.
해당 사이트를 들어가 보면 아래와 같은 이미지를 볼 수 있습니다. 아래의 이미지는 살짝 아래로 이동한 상태입니다.
보시면 필드 및 생성자, 메서드 요약(summary) 항목이 나누어져 있고, 각각의 항목에 따른 내용들이 명시되어 있습니다.
영어라는 언어의 장벽이 있기는 하지만.. 크롬을 사용하신다면 페이지 번역을 상용하시면 어느 정도 이해가 가능하실 것입니다.
예를 들어 String 클래스의 "replaceAll(String regex, String replacement)" 메서드를 참고한다고 하면 해당 페이지의 메서드 요약에서 replaceAll을 찾거나 ctrl + f를(Windows 기준) 누른 후 replaceAll을 검색하여 찾은 후 해당 메서드를 클릭하시면 좀 더 세부적인 설명을 확인할 수 있습니다.
위 이미지는 replaceAll 메서드를 클릭 후 이동된 페이지에서 나온 세부 설명입니다.
메서드 클릭 시 위 이미지처럼 출력되는 게 아니라 이동하여 보여줍니다. (위 이미지는 캡처 후 이어 붙인 이미지입니다.)
그리고 위 내용을 크롬의 페이지 번역 사용 시 아래의 이미지처럼 번역되어 출력됩니다만.. 번역의 상태가... 대강 이해하는 선에서 넘기면 좋을 것 같습니다.
사실 문서에서 해당 내용만 보고는 어떻게 사용하는지 이해하기 힘들 수 있습니다.
이럴 땐 해당 메서드 사용법을 검색하여 블로그 등을 참고하시는 게 좋습니다.
그럼 처음부터 메서드 사용법 검색해서 블로그를 참고해서 사용하면 되는 거 아니냐? 왜 굳이 공식 문서 들어가서 확인하고 찾느냐?라는 의문이 생길 수 있을 것 같습니다.
해당 클래스에 뭔가 이런 동작을 하는 메서드가 있을 것 같은데..? 싶을 때 공식 문서를 들어가서 찾는 방식이라고 생각해 주시면 될 것 같습니다.
아니면 해당 클래스에 어떤 필드, 생성자, 메서드 등이 있는지 확실하게 알고 싶을 때 이용하시면 됩니다.
문서에 메서드가 안보이는 경우
번외로, 아니 공식 문서를 들어와서 확인해 봤는데 해당 메서드에서 잘 사용하고 있는 메서드가 안 적혀 있는데요..? 인 경우가 있을 수 있습니다. 이러한 경우는 2가지로 나누어 볼 수 있습니다.
- 상속된 클래스에서 정의된 메서드의 경우
- 컴파일 시 컴파일러가 알아서 추가해 주는 경우
상속된 클래스에서 정의된 메서드의 경우
1번의 경우는 메서드 요약의 맨 아래를 보시면 아래의 이미지와 같이 어떤 클래스에 이러한 메서드들이 상속되었다.라고 표현이 되어있는 경우입니다.
해당 메서드들은 상위 클래스에서 구현이 된 내용 그대로를 사용하기 때문에 상위 클래스의 문서에서 찾아봐야 합니다.
위에서 그냥 해당 메서드를 클릭하면 알아서 해당 메서드의 상세 설명으로 넘어갑니다.
그리고 상위 클래스가 아닌 interface에서 상속받는데 interface에서 구현된 default method인 경우도 존재할 수 있으므로 해당 문서의 시작 부분에 존재하는 아래의 이미지 내용을 참고하셔서 상속받는 interface에 구현된 메서드인지도 확인을 해야 합니다. (implements 뒤에 오는 인터페이스들)
컴파일 시 컴파일러가 알아서 추가해 주는 경우
2번의 경우는 특이한 경우인데 컴파일 진행시 컴파일러가 해당 클래스에 메서드를 추가하는 경우입니다.
이러한 메서드를 암시적 메서드(implicit method)라 부르는데 Enum 클래스의 values() 메서드 등이 존재한다.
왜 공식적으로 클래스에 추가하지 않고 컴파일러가 추가하게끔 되어있는지 이유를 좀 찾아봤으나.. 확실하게 찾지는 못했고 어느 한 Stack overflow에 달린 답변에서 "Java language spectification"에 요구되는 기능이기에 추가를 했다는 내용을 봤다. (링크)
자세한 내용은 잘 모르겠으나.. 컴파일러에 의해 추가가 안되는 경우가 발생할 가능성도 있기 때문에 최대한 지양하는 게 좋지 않을까 하며 넘어갔습니다.
사실상 제목이 Java 클래스 검색법으로 뭔가 대단한 방법이 있는 것 같이 했지만.. 대부분 알고 있는 사실을 기록한 것 같습니다. 혹시나 Oracle에 존재하는 Java의 공식 문서의 존재를 잘 모르고 계셨던 분이 계시다면 도움이 되었으면 좋겠네요.
'Develop > Java' 카테고리의 다른 글
Java - File read 2가지 방법 (0) | 2022.11.29 |
---|---|
JPA Fetch Type (1) | 2022.09.09 |
Collection framwork (0) | 2022.07.26 |
제네릭(Generic)이란? (0) | 2022.07.25 |
클래스와 인스턴스 - class & instance (0) | 2022.07.25 |