The Java Tutorials have been written for JDK 8
4. Annotation
- 프로그램에 메타데이터 정보를 제공하는 주석입니다.
- 코드에 직접적인 영향을 주지 않습니다.
ElementType
public enum ElementType {
TYPE, /** Class, interface, enum, or record declaration */
FIELD, /** Field declaration */
METHOD, /** Method declaration */
PARAMETER, /** Formal parameter declaration */
CONSTRUCTOR, /** Constructor declaration */
LOCAL_VARIABLE, /** Local variable declaration */
ANNOTATION_TYPE, /** Annotation interface declaration */
PACKAGE, /** Package declaration */
TYPE_PARAMETER, /** Type parameter declaration */
TYPE_USE, /** Use of a type */
MODULE, /** Module declaration. */
RECORD_COMPONENT; /** Record component */
}
RetentionPolicy
public enum RetentionPolicy {
SOURCE, /** discarded by the compiler. */
CLASS, /** (default) need not be retained by the VM at run time */
RUNTIME /** retained by the VM at run time */
}
5. Interfaces and Inheritance
Interface
- 클래스간의 통신에 대한 계약을 명시하는 reference type 입니다.
- 인터페이스를 구현하는 구현체는 반드시 계약에 대한 구현을 해야 컴파일될 수 있습니다.
- 클라이언트쪽에서는 상세 구현에 대해 알 필요가 없습니다.
- 상수, 메서드만 가질수 있습니다.
- static, default 키워드의 메서드가 허용됩니다.
- 상태를 가질 수 없습니다.
Inheritance
- 한 클래스가 다른 클래스의 속성과 메서드를 재사용할 수 있게 해줍니다.
- 계층적 구조를 만들어 의미 있는 클래스 관계를 표현할 수 있습니다.
6. Numbers and Strings
Number
- java.lang에 정의된 추상클래스로 여러 숫자형 클래스의 슈퍼클래스로 사용됩니다.
- java의 기본숫자형 wrapper class를 제공합니다.
Autoboxing
- 자동적으로 컴파일러가 primitive type에 대응되는 wrapper class로 컨버팅하는 기능입니다.
Unboxing
- 자동적으로 컴파일러가 wrapper class에 대응되는 primitive type로 컨버팅하는 기능입니다.
String
- character의 연속적인 집합입니다.
- 인스턴스를 double quotes로 끝나는 character 집합으로 초기화할 수 있습니다.
- immutable 한 클래스입니다.
StringBuilder
- 문자열을 변경할 수 있는 클래스입니다.
- 내부적으로 연속적인 character를 보관하는 특정 길이의 array로 문자열을 다룹니다.
- 동기화에 대한 보장이 없습니다.
- null 값을 전달할 경우, NPE가 발생합니다.
StringBuffer
- 문자열을 변경할 수 있는 클래스입니다.
- 동기화 처리가 되어있습니다.
7. Generics
- 타입을 파라미터로 가지는 클래스나 인터페이스를 정의할 때 사용됩니다.
- 제네릭을 사용하면 컴파일 타임에 타입 안전성을 제공하므로 런타임 오류를 방지하는 데 도움이 됩니다.
Type Parameter Naming Conventions
- E: Element (주로 컬렉션에서 사용)
- K: Key
- N: Number
- T: Type
- V: Value
- S, U, V 등: 2번째, 3번째, 4번째 타입을 나타낼 때 사용
Bounded Type Parameters
- extends : 특정 타입이나 그 타입의 하위 클래스/인터페이스만 허용하도록 제한할 수 있습니다.
- super : 특정 타입이나 그 타입의 상위 클래스/인터페이스만 허용하도록 제한할 수 있습니다.
public <U extends Number> void inspect(U u){
Type Inference
- 인자를 기반으로 타입을 추론하는 기능입니다.
List<String> list = new ArrayList<>();
Type Erasure
- 컴파일 타임에만 타입 제약 조건을 정의합니다.
- 타입 정보가 런타임에 소거됩니다.
- 예를 들어, List<Integer>와 List<String>은 컴파일 후에 모두 List로 변환됩니다.
출처
'Java' 카테고리의 다른 글
[Java][Tutorial] 3-3. Collections: Aggregate Operations (0) | 2023.10.20 |
---|---|
[Java][Tutorial] 3-2. Collections: Queue, Deque, Map (0) | 2023.10.15 |
[Java][Tutorial] 3-1. Collections: Collection, Set, List (2) | 2023.10.15 |
[Java][Tutorial] 2-1. Essential Java Classes: Exceptions (0) | 2023.10.15 |
[Java][Tutorial] 1-1. Learning the Java Language: Object-Oriented Programming Concepts (1) | 2023.10.15 |