이펙티브 자바 용어
포스트
취소

이펙티브 자바 용어

익스트림 프로그래밍 (xp) 비즈니스 상의 요구가 시시각각 변동이 심한 경우에 적합한 개발 방법

정적 팩토리 메소드 객체를 생성하는 역할을 분리하는 static 메소드

컴포넌트 재사용이 가능한 독립된 모듈

컴포지션 기존 상속의 단점을 보완하기 위하여 새로운 클래스를 정의하여 필드에 인스턴스를 선언하고 다룸 (상속은 is-a를 완벽히 따를 때 사용)

재귀적 타입 한정 타입 매개변수가 자신을 포함하는 수식에 의해 한정되는 것 ex) <T extends Comparable<T>>

열거 타입의 싱글턴 원소가 하나인 열거 타입은 싱글턴임을 강하게 보증하지만 상속 구조 형성 여부를 따지고 정해야함

자기 메모리를 직접 관리하는 클래스 메모리를 직접 관리하는 클래스(Stack 등)는 JVM이 원소가 참조하는 객체들이 어디까지 활성 영역인지 알수 없다.

구체 클래스(Concrete class) 자신의 생성자로 인스턴스를 생성할 수 있는 클래스

심볼릭 링크 일종의 참조

캐싱 사용 빈도가 높고 변경은 드문 데이터를 정적 메모리에 키를 부여해 보관하여 데이터의 물리적 전송 거리를 줄임

로깅 로그를 생성하는 과정 모든 행위와 이벤트 정보를 시간의 경과에 따라 기록한 데이터

믹스인 상속 계층에 무관한 클래스에서 사용할 수 있는 메소드를 포함하는 클래스(포함관계) 구현된 메소드가 포함된 인터페이스로 볼 수 있다(종속성 역전 원칙의 예)

공변 반환 타입(Covariant Return Type) 오버라이딩에서 반환 타입이 변경됨

가변 객체와 불변 객체 대표적인 불변객체 = String 대부분의 인스턴스는 가변 객체(내부 상태가 일정하지 않음)

배열 clone 복사 깊이 객체가 낀 순간 깊은 복사 노가다 시작, 얕은 복사는 쓸 일 없을 듯

아키텍처 프로그램 주요 구조 설계 컴포넌트의 집합이라 말할 수 있을까?

정적 클래스의 특징 중첩 클래스만이 정적 클래스 선언할 수 있음 인스턴스를 만들 수 없음

정적 임포트 클래스 이름 없이 직접 다룰 수 있음

구현부와 api의 분리 흔히 인터페이스를 이용해 분리함 inter-face 상호작용

JLS - java language specification

동반 클래스 자바8 이전의 인터페이스와 관련된 정적 메서드들을 제공한 클래스 대표적인 예로 Collection 인터페이스와 Collections 동반 클래스

hook 메소드 abstaract는 재정의를 강제하나 hook은 선택적으로 할 수 있는 메소드

타입 안전 혼성 컨테이너(type safe heterogeneous container pattern) 컨테이너 대신 키를 매개변수화 한 다음, 컨테이너에 값을 넣거나 뺄대 매개변수화 한 키를 함께 제공한다. 각 타입의 Class 객체를 매개변수화한 키 역할로 사용한다 이때 class 리터럴의 타입은 Class이다. 코드를 작성할 시점에는 어떤 타입의 클래스를 사용할지 모르지만, 런타임 시점에 지금 실행되고 있는 클래스를 가져와서 실행해야 하는 경우

리플렉션 구체적인 클래스 타입을 알지 못해도 그 클래스의 메소드, 타입, 변수들에 접근할 수 있도록 해주는 자바 API 런타임 환경에서 클래스 정보를 추출할 수 있음

검사 비검사 예외 Exception은 Checked형 검사 예외 Error (컴파일) RuntimeException은 UnChecked 비검사 예외 (런타임)

접근자 메서드 접근 제한된 멤버를 사용할 수 있게 해주는 메소드

마이그레이션 다른 운영환경으로 옮겨가는 과정

reentrant 여러 쓰레드가 코드를 동시에 수행할 수 있고 동시성을 보장한다. 구식 Thread-safe의 상향버전

스택 추적 캡처 프로그램 실행 중 특정한 시점에서의 스택 프레임에 대한 리포트

런타임 제네릭 타입 소거 제네릭의 장점은 컴파일 타임에 타입에 대한 안정성을 보장받을 수 있다. 컴파일 타임에만 타입에 대한 제약 조건을 적용하고, 런타임에는 타입에 대한 정보를 소거한다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.