인터페이스(Interface) : Annotation은 인터페이스의 일종클래스(Class) : 열거 타입(Enum)은 클래스의 일종배열(Array)~여기까지가 참조 타입(reference type)이라고 불림!~기본 타입(Primitive)클래스의 인스턴스와 배열은 객
Item 1 : 생성자 대신 정적 팩터리 메서드를 고려하라 클래스는 생성자와 별도로 정적 팩터리 메서드(static factory method)를 제공할 수 있다. 그 클래스의 인스턴스를 반환하는 단순한 정적 메서드를 일컫는다. 이 메서드는 기본 타입인 boole
자바 라이브러리에서 close 메서드를 호출해 직접 닫아줘야 하는 자원 예시 : InputStream, OutputStream, java.sql.Connection 등try-finally 구문을 하나만 쓰면 leak이 생길 수 있다.예외는 try 블록과 finally
애매모호한 clone 규약 clone 규약 x.clone() != x 반드시 true x.clone().getClass() == x.getClass() 반드시 true x.clone().equals(x) true가 아닐 수도 있다. 불변 객체라면 다음으로 충분하다.
기존 구현체(인터페이스를 직접 구현한 클래스)를 깨뜨리지 않고 인터페이스에 메서드를 추가할 방법이 없었음.인터페이스에 메서드를 추가하면 보통은 컴파일 오류가 나는데, 추가된 메서드가 우연히 기존 구현체에 이미 존재할 가능성이 아주 낮기 때문.기존 인터페이스에 메서드를
제네릭을 사용하기 시작하면 수많은 컴파일러 경고를 볼 수 있음.컴파일러 경고 예시) 비검사 형변환 경고, 비검사 메서드 호출 경고, 비검사 매개변수화 가변인수 타입 경고, 비검사 변환 경고 등자바 7부터 지원하는 다이아몬드 연산자(<>)를 사용하면 타입 매개변수를
메서드도 제네릭으로 만들 수 있는데, 매개변수화 타입을 받는 정적 유틸리티 메서드는 보통 제네릭이다.예) Collections의 '알고리즘' 메서드(binarySearch, sort 등 ...)제네릭 메서드 작성법은 제네릭 타입 작성법과 비슷하다.다음은 두 집합의 합집
배열이나 리스트에서 원소를 꺼낼 때 ordinal 메서드(아이템 35)로 인덱스를 얻는 코드가 있다.정원에 심을 식물들을 배열 하나로 관리하고, 이들을 생애주기(한해살이, 여러해살이, 두해살이)별로 묶어보자.생애주기별로 총 3개의 집합을 만들고, 정원 한 바퀴를 돌며
스트림 API 스트림 API는 다량의 데이터 처리 작업(순차적이든 병렬적이든)을 돕고자 자바 8에 추가됨. 제공하는 추상 개념의 두 가지 핵심 스트림은 데이터 원소의 유한 혹은 무한 시퀀스를 뜻함. 스트림 파이프라인은 이 원소들로 수행하는 연산 단계를 표현함. 스트
가변인수(varags) printf() 함수의 매개변수 매개변수로 아무것도 넘겨주지 않을 수도 있고, 혹은 여러 개를 넘겨줄 수도 있다. 이러한 매크로는 함수가 고정된 수의 필수 인수에 가변 수의 선택적 인수가 붙은 형식을 사용한다고 가정한다. 명시한 타입의 인수를
Memory Layout of Objects in Java link : https://www.baeldung.com/java-memory-layout OOPs(Ordinary Object Pointers) JVM에 있는 모든 포인터들(객체와 배열)oopDesc라고 불
출처 [출처](https://medium.com/geekculture/effective-java-prefer-primitive-typ
업로드중..
Serialization 자바 내부 시스템에서 사용되는 객체나 데이터를 외부에서 사용할 수 있도록 Byte 형태로 변환 Java.io.Serializable 인터페이스를 상속받은 객체와 Primitive 타입의 데이터가 직렬화의 대상 기본자료형(Primitive