https://sundaland.tistory.com/161[ ▶ Type Inference ] 타입 유추는 메서드 호출에 적용할 수 있는 타입 아규먼트 (또는 아규먼트)를 결정하기 위해 해당 메서드 호출 및 해당 메서드 선언을 살펴보는 자바 컴파일러의 기능이다.추론 알고리즘은 타입 아규먼트와 (가능한 경우) 리턴되는 타입을 결정한다.추론 알고리즘은 모든 아규먼트와 함께 동작하는 특정 타입을 찾으려고 시도한다. 아래 코드의 타입 추론은 pick 메서드에 전달되는 두 번째 아규먼트가 Serializalbe 유형임을 확인한다.static T pick(T a1, T a2) { return a2; }Serializable s = pick("d", new ArrayList()); [ ▷ 타입 유추와 제너릭 메서..
전체 글
https://sundaland.tistory.com/160[ ▶ 제너릭 (Generics) ]클래스, 엔터페이스 및 메서드를 정의 할때 타입(클래스 및 인터페이스)을 파라미터로 사용할 수 있다.메서드 선언에 사용되는 formal 파라미터와 마찬가지로, 타입 파라미터는 다른 입력으로 동일한 코드를 재사용할 수 있는 방법을 제공한다. (템플릿이라고도 한다.)formal 파라미터에 대한 입력은 값이지만, 타입 파라미터에 대한 입력은 타입이다.컴파일 시간에 더 강력한 타입 검사. 자바 컴파일러는 제너릭 코드에 강력한 타입 검사를 적용하기에, 컴파일 오류를 발견하기 쉽다.캐스트 제거. 해당 리스트의 엘리먼트 타입을 알 수 없다. (raw 타입은 제너릭 JPA에서 여전히 사용되고 있다.)▼ 제너릭이 없는 아래의 ..
https://sundaland.tistory.com/276 Lesson: Interfaces and Inheritance[Inheritance 2] sundaland.tistory.com 다양성 (Polymorphism)다형성의 사전적 정의는 유기체나 종의 다양한 형태나 단계를 가질 수 있는 생물학의 원리를 의미한다.이 원칙은 객체 지향 프로그래밍(OAP) 및 자바 언어와 같은 언어에도 적용이 가능하다.클래스의 하위 클래스는 고유한 동작을 정의하면서 상위 클래스와 동일한 기능 중 일부를 공유할 수 있다. 다음 코드는 Bicycle 클래스를 약간 수정하여 다형성을 시연한 것이다. 현재 인스턴스에 저장된 모든 데이터를 표시하는 클래스에 printDescription 메서드를 추가했다.public void ..
리팩토링코드를 재구성하여 코드의 구조를 개선하고 유지보수를 쉽게 하기 위한 작업이다.결과의 변함이 없이 코드를 재구성한 것으로 주로 가독성을 높이고 유지보수를 편하게 한다. 버그를 없애거나 새로운 기능을 추가하는 행위는 ㄹ아니다.메서드 추출 (Extract Method): 긴 메서드를 작은 단위의 메서드로 분리하여 코드 가독성을 높입니다.클래스 추출 (Extract Class): 큰 클래스를 작은 클래스로 분리하여 각 클래스가 단일 책임을 가지도록 합니다.메서드 옮기기 (Move Method): 메서드가 더 잘 어울리는 다른 클래스로 이동하여 관련성을 높입니다.필드 옮기기 (Move Field): 필드가 더 잘 어울리는 클래스로 이동하여 응집도를 높입니다.인터페이스 추출 (Extract Interface..
https://sundaland.tistory.com/275 Lesson: Interfaces and Inheritance[Inheritance 1] sundaland.tistory.com 상속 (Inheritance)다른 클래스에서 파생된 클래스를 하위 클래스 (파생/확장/하위 클래스라고도 함)라 한다. 하위 클래스로 파생되는 클래스를 (기본/부모 클래스)라 한다; 슈퍼 클래스가 없는 Object를 제외하고 모든 클래스는 단 하나의 Direct 슈퍼 클래스 (단일 상속)를 갖습니다. 다른 명시적인 슈퍼클래스가 없으면 모든 클래스는 암시적으로 Object의 하위 클래스이다. # Direct 슈퍼 클래스는 상속 계층 구조에서 바로 위 슈퍼 클래스를 의미한다. Direct 슈퍼 클래스 이외의 슈퍼 클래스에 ..
인터페이스 (Interface)소프트웨어 엔지니어링에는 서로 다른 프로그래머 그룹이 소프트웨어가 상화작용하는 방식을 설명하는 계약(Contact)에 동의하는 것이 중요한 여러 가지 상황이 있다.각 그룹은 다른 그룹의 코드가 어떻게 작성되는지는 전혀 몰라도 자신의 코드를 작성할 수 있어야 한다. 즉 추상화이다.일반적으로 인터페이스는 그러한 계약이다. 게시된 인터페이스를 계속 준사하는 한 언제든지 소프트웨어를 수정할 수 있는 권리는 보유한다 자바에서의 인터페이스자바 프로그래밍 언어에서 인터페이스를 클래스와 유사한 참조 타입이다. 상수, 메서드 시그니, 기본 메서드, 정적 메서드, 중첩 타입 (인터페이스)만을 포함할 수 있다.메서드 본문은 기본 메서드나 정적 메서드에서만 존재한다.클래스에 의해 구현되거나 다른..
https://sundaland.tistory.com/282 Lesson: Classes and Objects 4[Lambda, Enum] sundaland.tistory.com# Predicate는 boolean 값으로 참과 거짓을 반환하는 test 메소드를 가지고 있다.Predicate 프리디케이트 호출 변수명 으로 구성된다. 호출시 객체타입이 일치하지 않아도 컴파일 오류는 발생하지 않지만 런타임때는 오류가 발생한다. 람다 표현식 (Lambda Expressions)익명 클래스의 한 가지 문제는 익명 클래스의 구현이 메서드가 하나가 포함된 인터페이스와 같이 매우 간단한 경우 익명 클래스의 신택스가 다루기 힘들고 명확하지 않게 보일 수 있다.람다 표현식을 사용하면 특정 기능을 메서드 아규먼트로 처리하거..
중첩 클래스 (Nested)한 클래스 내에 다른 클래스를 정의할 수 있다. 이러한 클래스를 중첩 클래스라고 한다.class OuterClass { ... class NestedClass { ... } static class StaticNestedClass { ... }} 중첩 클래스는 중첩 클래스를 포함하고 있는 클래스 멤버이다.비정적(Non-static) 중첩 클래스 (내부 클래스)는 이 클래스를 포함하고 있는 외부 클래스의 다른 멤버에 접근할 수 있으며, 그 멤버들이 private으로 선언되어 있더라도 마찬가지이다.정적(Static) 중첩 클래스는, 이 클래스를 포함하고 있는 외부 클래스의 다른 멤버에 접근할 수 없다.OuterClass의 멤버로서,..