High Level Programming Language/Learning the Java Language(39)
-
Lesson: Generics[Wildcards, Wildcard Capture]
Wildcards일반 코드에서 와일드카드라고 하는 물음표(?)는 알 수 없는 타입을 나타냅니다. 와일드카드는 다양한 상황에서 사용할 수 있습니다. 때로는 리턴 타입으로 사용됩니다(좀 더 구체적으로 프로그래밍하는 것이 더 나은 방법이긴 하지만). 와일드카드는 제네릭 메서드 호출, 제네릭 클래스 인스턴스 생성 또는 상위 타입에 대한 타입 아규먼트로 사용되지 않습니다.✅ 1. 와일드카드로 제네릭 클래스 인스턴스 생성 불가❌ 잘못된 코드List list = new List(); // 컴파일 오류! ❌ 이유는 미지의 타입(unknown type)을 의미하기 때문에구체적인 타입을 확정해야 하는 시점(=객체 생성 시)에는 사용할 수 없습니다.✅ 올바른 코드List list = new ArrayList(); // O ..
2023.06.17 -
Lesson: Generics[Type Inference, Target Types]
Type Inference타입 유추는 메서드 호출에 적용할 수 있는 타입 아규먼트(또는 아규먼트)를 결정하기 위해 해당 메소드 호출 및 해당 메서드 선언을 살펴보는 Java 컴파일러의 기능입니다. 추론 알고리즘은 타입 아규먼트의 타입과 (가능한 경우)리턴되는 타입을 결정합니다. 마지막으로 추론 알고리즘은 모든 아규먼트와 함께 작동하는 특정 타입을 찾으려고 시도합니다. 이 마지막 요점을 설명하기 위해 다음 예제에서 타입 추론은 pick 메서드에 전달되는 두 번째 아규먼트가 Serializable 유형임을 확인합니다.static T pick(T a1, T a2) { return a2; }Serializable s = pick("d", new ArrayList()); Type Inference and Gen..
2023.06.17 -
Lesson: Generics
Why Use Generics?간단히 말해서, 제네릭은 클래스, 인터페이스 및 메서드를 정의할 때 타입(클래스 및 인터페이스)을 파라미터로 사용할 수 있습니다. 메서드 선언에 사용되는 더 친숙한 formal 파라미터와 마찬가지로, 타입 파라미터는 다른 입력으로 동일한 코드를 재사용할 수 있는 방법을 제공합니다. 차이점은 formal 파라미터에 대한 입력은 값인 반면, 타입 파라미터에 대한 입력은 타입이라는 것입니다. 제네릭을 사용하는 코드는 제네릭이 아닌 코드에 비해 많은 이점이 있습니다:컴파일 시간에 더 강력한 타입 검사. 자바 컴파일러는 제너릭 코드에 강력한 타입 검사를 적용하고 코드가 타입 안전을 위반하는 경우 오류를 발행합니다. 컴파일 타임 오류를 수정하는 것은 찾기 어려울 수 있는 런타임 오류를..
2023.06.17 -
자바 예외 처리(feat.Linux Exception Handling)
보호되어 있는 글입니다.
2023.06.07 -
Lesson: Annotations
가장 간단한 형태의 어노테이션은 메타데이터의 한 형태로, 프로그램 자체의 일부가 아닌 프로그램에 대한 데이터를 제공합니다. 어노테이션은 어노테이션이 달린 코드의 작동에 직접적인 영향을 미치지 않습니다.어노테이션은 여러 용도로 사용됩니다. 그 중 몇 가지는 다음과 같습니다:컴파일러를 위한 정보 제공 — 어노테이션은 컴파일러가 오류를 감지하거나 경고를 무시하도록 사용할 수 있습니다.컴파일 시점 및 배포 시점 처리 — 소프트웨어 도구는 어노테이션 정보를 처리하여 코드, XML 파일 등을 생성할 수 있습니다.런타임 처리 — 일부 어노테이션은 런타임에 검토할 수 있습니다.이 강의는 어노테이션이 사용될 수 있는 위치, 어노테이션 적용 방법, Java Platform, Standard Edition (Java SE ..
2023.06.06 -
사실상 final(effective final)이란?
“사실상 final인 바깥쪽 블록의 로컬 변수 및 파라미터”란 자바 람다와 익명 클래스에서 매우 중요한 개념입니다.이 개념을 완전히 이해하려면 ‘final’과 ‘effectively final(사실상 final)’의 차이부터 설명드리는 게 핵심입니다.🧠 사실상 final(effective final)이란?✅ 정의사실상 final(effective final)이란,"코드에서 단 한 번만 값이 할당되고, 이후 변경되지 않는 지역 변수나 파라미터를 말합니다."즉, 명시적으로 final 키워드를 붙이지 않아도 실제로는 변경되지 않는 변수입니다.🔍 예제 1 – final과 사실상 final 변수public void test() { final int a = 10; // 명시적으로 fin..
2023.06.06