🟨 목 차 🟨
1. 미리 만들어 놓은 클래스들은 아주 많아요
1-1. Java 클래스 API 문서 보기
1-1-1. 패키지와 클래스 / 인터페이스 이름
1-1-2. 클래스 상속 관계 다이어그램(Class Inheritance Diagram)
1-1-3. 구현한 모든 인터페이스 목록 [클래스에만 존재함]
1-1-4. 알려진 모든 하위 인터페이스 목록(All known Subinterfaces) [인터페이스에만 존재함]
1-1-5. 알려진 모든 구현한 클래스 목록(All Known Implementing Classes) [인터페이스만 존재함]
1-1-6. 클래스 / 인터페이스의 선언 상태(Class/Interface Declaration)
1-1-7. 클래스 / 인터페이스의 설명(Class/Interface Description)
1-1-8. Since: / See Also:
1-1-9. 내부 클래스 종합(Nested Class Summary)
1-1-10. 상수 필드 종합(Filed Summary)
1-1-11. 생성자 종합(Constuructor Summary)
1-1-12. 메소드 종합(Method Summary)
1-1-13. 부모 클래스로부터 상속받은 메소드들(Methods declared in class java.lang.Object)
1-1-14. 상수 필드 상세 설명(Fild Detail)
1-1-15. 생성자 상세 설명(Constructor Detail)
2. Deprecated라고 표시되어 있는 것은 뭐야 ?
3. 자바 API문서에 있는 Header와 Footer에 있는 링크들은 뭘까?
3-1. Overview
3-2. Package
3-3. Class
3-4. Use
3-5. Tree
3-6. Deprecated
3-7. Index
3-8. Help
◼️ 1. 미리 만들어 놓은 클래스들은 아주 많아요 ◼️
자바 프로그램을 아무것도 없는 상태에서 개발하려면 아주 간다한 프로그램을 작성하더라도 꽤 오랜 시간과 노력이 소요될 것이다.
그래서 우리가 설치해서 사용중인 JDK에는 엄청나게 많은 클래스와 메소드들이 포함되어 있다.
이렇게 많은 클래스를 사용할 때 참조하는 문서가 바로 API(Application Programming Interface)라고, "애플리케이션에 선언되어 있는 클래스와 메소드에 대한 상세한 설명이 포함된 문서"를 말한다.
◼️ 1-1. Java 클래스 API 문서 보기
◼️ 1-1-1. 패키지와 클래스 / 인터페이스 이름
[ https://docs.oracle.com/javase/10/docs/api/java/lang/String.html ]
다음과 같이 제공한다.
◼️ 1-1-2. 클래스 상속 관계 다이어그램(Class Inheritance Diagram)
[ https://docs.oracle.com/javase/10/docs/api/java/lang/String.html ]
이 관계는 매우 중요하다.왜냐하면 해당 클래스의 객체에서 사용할 수는 있지만, 지금 보고 있는 페이지에 메소드에 대한 상세 설명은 존재하지 않을 수도 있기 때문이다. 오라클 자바 API문서는 부모 클래스에 선언되었지만, 자식 클래스에서 별도로 Overriding을 하지 않은 메소드는 자세한 설명이 제공되지 않는다. 따라서 사용가능한 메소드가 있는데 그 클래스의 API에 없다면 부모 클래스들의 메소드들을 살펴봐야 한다.(즉, 자식 클래스에서 Overriding을 하지 않는 메소드들은 설명이 없다)
◼️ 1-1-3. 구현한 모든 인터페이스 목록 [클래스에만 존재함]
[ https://docs.oracle.com/javase/10/docs/api/java/lang/String.html ]
여기에 명시되어 있는 모든 인터페이스의 메소드들은 해당 클래스에 반드시 구현되어 있을 것이다.
◼️ 1-1-4. 알려진 모든 하위 인터페이스 목록(All known Subinterfaces) [인터페이스에만 존재함]
[ https://docs.oracle.com/javase/10/docs/api/java/lang/Runnable.html ]
인터페이스 간의 확장 관계를 쉽게 확인 할 수 있다.
◼️ 1-1-5. 알려진 모든 구현한 클래스 목록(All Known Implementing Classes) [인터페이스만 존재함]
[ https://docs.oracle.com/javase/10/docs/api/java/lang/Runnable.html ]
해당 인터페이스를 구현한 클래스들의 목록을 알수 있다.
Runnable 인터페이스를 매개 변수로 사용하는 메소드가 있으면, Thread 객체를 생성해서 넘겨주면 된다는 것이다.
◼️ 1-1-6. 클래스 / 인터페이스의 선언 상태(Class/Interface Declaration)
[ https://docs.oracle.com/javase/10/docs/api/java/lang/String.html ]
클래스의 선언 상태를 볼 수 있다. 즉, 클래스가 어떤 접근 제어자를 사용했는지, final 클래스인지 등을 확인 할 수 있다.
◼️ 1-1-7. 클래스 / 인터페이스의 설명(Class/Interface Description)
[ https://docs.oracle.com/javase/10/docs/api/java/lang/String.html ]
클래스에 대한 상세한 설명을 볼 수 있다. 이 영역에서 제공되는 내용은 클래스의 용도, 클래스 사용법, 사용 예 등이 자유롭게 기술되어 있다.
◼️ 1-1-8. Since: / See Also:
[ https://docs.oracle.com/javase/10/docs/api/java/lang/String.html ]
클래스에 대한 설명 가장 아래에 있는 Since와 See also 부분을 보아라.
Since는 해당 클래스가 JDK에 추가된 버전이 명시된다. String 클래스는 자바가 처음 만들어지면서부터 생긴 클래스 이기 떄문에 JDK1.0으로 되어 있지만, Java 버전이 올라가면서 많은 클래스들이 추가되었기 때문에 개발할 때에는 이 부분을 꼭 확인해 봐야한다. 예를 들어 Java 5기반의 시스템을 만드는데 Java6나 7의 API 문서를 보면서 개발하면, 컴파일이 제대로 되지 않는 경우가 발생할 수 있다. 클래스만이 아니라 클래스에 선언된 상수 필드나 메소드에도 Since가 표시되어 있는 경우가 있다. 현재 클래스가 만들어질 때 같이 만든 상수 필드나 메소드에는 Since가 없지만, 그 이후의 JDK에 포함된 상수 필드나 메소드에는 Since가 명시되어 있다.
만약 개발하면서 생소한 메소드가 있다면 API 문서를 확인하면 그 메소드가 언제부터 추가되어 있는지 확인하는 습관을 가지는 것이 좋다.
See also는 그 클래스와 관련되어 있는 모든 클래스나 인터페이스, 메소드 등의 링크가 제공된다.
◼️ 1-1-9. 내부 클래스 종합(Nested Class Summary)
[ https://docs.oracle.com/javase/10/docs/api/java/util/Calendar.html ]
자바는 클래스 안에 내부 클래스를 선언하여 사용 가능하다. 이 내부 클래스를 public하게 선언할 경우 그에 대한 내용이 이 목록에 제공된다. 내부 클래스는 해당 클래스에서 직접 호출하여 사용할 수 있기 때문에 쉽게 사용할 수 있다. 이 내부 클래스 목록에 있는 클래스의 링크를 클릭하면 해당 클래스의 상세 설명 API 화면으로 이동한다. (String 클래스에는 내부 클래스가 없으니, Thread 클래스의 내부클래스를 살펴본다.)
◼️ 1-1-10. 상수 필드 종합(Filed Summary)
[ https://docs.oracle.com/javase/10/docs/api/java/util/Calendar.html ]
클래스에는 public static으로 선언한 상수 필드가 존재할 수 있다. 이 값은 바뀌지 않기 때문에 여로모로 많이 사용된다. 어떤 값들을 여기에 선언하는지 궁금한 사람은 "java.util.Calendar"를 살펴보면 이해가 될 것이다.
◼️ 1-1-11. 생성자 종합(Constuructor Summary)
[ https://docs.oracle.com/javase/10/docs/api/java/lang/String.html ]
클래스에 어떤 생성자들이 선언되어 있는지를 목록으로 제공한다. 어떤 생성자가 있는지 한눈에 볼 수 있기 때문에 아주 유용하다. 생성자에 걸려 있는 링크를 클릭하면 상세 설명으로 이동한다.
◼️ 1-1-12. 메소드 종합(Method Summary)
[ https://docs.oracle.com/javase/10/docs/api/java/lang/String.html ]
클래스에 선언되어 있는 모든 public 및 protected 메소드에 대한 종합 정보를 제공한다. 이 내용은 우리가 개발하면서 가장 많이 봐야 하는 부분이다. 왜냐하면 어떤 메소드가 있는지 쉽게 확인 할 수 있고, 각 메소드의 리턴 타입이 어떤 것이고, 매개 변수로 어떤 것을 넘겨줘야 하는지를 알 수 있기 때문이다.
가장 왼쪽에 열 : 해당 메소드에 선언되어 있는 접근제어자가 나열, 만약 메소드의 접근제어자가 public 뿐이라면 리턴 타입만 표시된다.
지금 그림에 나온 내용들은 모두 리턴 타입 뿐이다.
해당 메소드가 static 메소드라면 staitc이 추가로 명시된다.
public이 아니라 protected라고 선언되어 있는 메소드도 표시==> 상속을 받을 자식 클래스에서 public, protected 메소드를 Overriding 하기위해
◼️ 1-1-13. 부모 클래스로부터 상속받은 메소드들(Methods declared in class java.lang.Object)
[ https://docs.oracle.com/javase/10/docs/api/java/lang/String.html# ]
여기에는 간단히 부모 클래스로부터 상속받은 메소드들이 나열된다. 부모 클래스가 여러개라면 각 클래스 별로 목록을 별도로 제공한다.
◼️ 1-1-14. 상수 필드 상세 설명(Fild Detail)
[ https://docs.oracle.com/javase/10/docs/api/java/lang/String.html# ]
클래스에 선언된 상수 필드가 어떤 내용을 제공하는지에 대한 상세한 설명을 나열한다.
여기서도 Since와 See Also가 제공되는 경우가 있다.
◼️ 1-1-15. 생성자 상세 설명(Constructor Detail)
[ https://docs.oracle.com/javase/10/docs/api/java/lang/String.html# ]
생성자를 어떻게 사용하고, 매개 변수에 어떤 값들이 제공되어야 하는지, 어떤 리턴 값을 제공하는지, 이 생성자에서 던지는(throws하는) 예외는 언제 발생하는지 확인 할 수 있다.
생성자도 Since와 See Also가 제공되는 경우가 있다.
◼️ 1-1-16. 메소드 상세 설명(Method Detail)
[ https://docs.oracle.com/javase/10/docs/api/java/lang/String.html# ]
◼️ 2. Deprecated라고 표시되어 있는 것은 뭐야 ? ◼️
Deprecated의 사전적 의미는 "강력히 반대하다"라는 말이다.
이 Deprecated는 생성자, 상수 필드, 메소드에 선언되어 있다.
JDK를 처음 만들었을 때에는 필요해서 만들었는데, 나중에 쓰다 보니 문제를 일으키거나 혼동을 가져와서 혹은 더 이상 가치가 없을때 Deprecated로 처리되어 버린다.
왜 없애지 않고 Deprecated라고 표시하는 걸까?
==> 버전이 올라갔을 때 메소드를 그냥 삭제해 버리면 버전이 업그레이드 되었을 때 문제가 발생할 수 있다. 이 외에 여러 발생 가능한 문제들이 많기 때문에 기존에 만들었던 메소드를 쉽게 지울 수 없는 것이다.
Deprecated는를 실행하면 정상적으로 클래스 파일도 생성되고 이상 없이 실행된다. 하지만 warning라는 경고만 뜰 뿐이다.
==> 일반 에디터에서 자바 코드를 작성하는 사람들은 Deprecated 된 메소드라는 것을 알수가 없다. 그래서 warning으로 알려주는 것이다.
Deprecated된 것들은 다 이유가 있으니 Deprecated된 메소드의 API를 보면 대체 메소드나 생성자를 가이드하니 참고한다.
◼️ 3. 자바 API문서에 있는 Header와 Footer에 있는 링크들은 뭘까? ◼️
자바 API 문서에 Header와 Footer에는 아래와 같은 메뉴들이 나열되어 있다.
- Overview
- Package
- Class
- Use
- Tree
- Deprecated
- Index
- Help
◼️ 3-1. Overview
전체 패키지에 대한 설명 화면으로 이동한다.
Overview에 나와 있는 패키지들의 목록과 각 패키지의 설명을 읽어 볼 것을 권장.
◼️ 3-2. Package
패키지 메뉴를 클릭하면 현재 보고 있는 클래스가 속해 있는 패키지의 모든 인터페이스, 클래스, 예외 등의 목록 및 간단한 설명을 확인 할 수 있다.
◼️ 3-3. Class
클래스 메뉴를 클릭하면 이 장에서 지금까지 자세하게 알아본 클래스에 대한 상세 설명 화면으로 이동한다.
◼️ 3-4. Use
Use 메뉴를 클릭했을 때는 JDK에 포함되어 있는 패키지 및 클래스 중에서 현재 보고 있는 패키지, 클래스, 인터페이스 등을 사용하는 모든 목록을 나열한다.
예를 들어 String 클래스를 보고 있는 상태에서 Use 메뉴를 누르면, 해당 클래스를 매개 변수로 사용하는 모든 메소드의 목록까지 보여준다.
◼️ 3-5. Tree
지금 보고 있는 클래스가 속한 패키지에 있는 모든 클래스들이 어떤 상속 관계를 갖고 있는지 Tree 형태로 제공한다.
◼️ 3-6. Deprecated
JDK에 포함되어 있는 클래스나 메소드 중 앞에서 알아본 deprecated 클래스나 메소드의 목록을 제공한다.
◼️ 3-7. Index
A부터 Z까지의 알파벳을 클릭하면, 각 알파벳에 해당하는 클래스, 인터페이스, 메소드, static 변수 등의 색인을 오름차순으로 정렬하여 제공한다.
◼️ 3-8. Help
API 문서에 대한 설명을 아주 간단하게 정리해 놓은 화면이다.
헤더와 푸터의 2번 째 줄에는 다음과 같은 기능들이 나열되어 있다.
- PREV CLASS : API 목록 상에서 위에 선언된 클래스의 상세 정보로 이동된다.
- NEXT CLASS : API 목록 상에서 아래에 선언된 클래스의 상세 정보로 이동한다.
- FRAMES : 지금까지 여러분들이 본 화면은 세개의 화면으로 분리된 이 FRAMES를 클릭했을 때의 화면이다.
- NO FRAMES : 분리되어 있는 화면이 싫은 분들을 위해서 제공되는 링크로, 이 링크를 클릭하면 세 개의 화면이 아닌 하나의 화면으로 제공된다. 다시 3개의 화면으로 넘어가려면 FRAMES를 클릭한다
'JAVA > 자바의신 1' 카테고리의 다른 글
13장 인터페이스와 추상클래스, enum (0) | 2022.09.09 |
---|---|
12장 모든 클래스의 부모 클래스는 Object에요 (1) | 2022.09.08 |
10장 자바는 상속이라는 것이 있어요 (1) | 2022.09.07 |
9장 자바를 배우면 패키지와 접근 제어자는 꼭 알아야 해요 (0) | 2022.09.07 |
8장 참조 자료형에 대해서 더 자세히 알아보자. (0) | 2022.09.06 |