Back-end Skill/JAVA 22

이펙티브 자바 Item.26 로타입은 사용하지마라

제네릭 타입(제네릭 클래스, 제네릭 인터페이스) List numbers = new ArrayList(); 클래스와 인터페이스 선언에 타입 매개변수를 사용한 클래스와 인터페이스 List → E는 타입 매개변수 제네릭은 JDK 1.5부터 지원됨 로 타입 List a = new ArrayList(); 제네릭 타입에서 타입 매개변수를 전혀 사용하지 않는 타입 타입 정보가 전부 지워진 것처럼 동작함 로 타입의 문제 //삽입과정 List stringCollection = new ArrayList(); // String을 넣으려고 만든 컬렉션 stringCollection.add("1"); stringCollection.add("2"); // 이런 저런 문자열 값들이 들어다가 stringCollection.add(2..

Back-end Skill/JAVA 2022.04.24

이펙티브 자바 Item 20. 추상 클래스보다는 인터페이스를 우선하라

자바의 다중 구현 메커니즘 자바가 제공하는 다중 구현 메커니즘은 인터페이스와 추상 클래스, 이렇게 두 가지다. -ㅈㅏㅂㅏ 8부터 인터페이스도 디폴트 메서드(default method)를 제공할 수 있게 되었다. 따라서, 두 메커니즘 모두 인스턴스 메서드를 구현 형태로 제공할 수 있다. 추상 클래스 vs 인터페이스 추상 클래스가 정의한 타입을 구현하는 클래스는 반드시 추상 클래스의 하위 클래스가 되어야 한다. 자바는 단일 상속만 지원하므로, 추상 클래스 방식은 새로운 타입을 정의하는 데 커다란 제약을 안게 된다. 반면, 인터페이스가 선언한 메서드를 모두 정의하고 그 일반 규약을 잘 지킨 클래스라면 다른 어떤 클래스를 상속했든 같은 타입으로 취급된다. 인터페이스 기존 클래스에도 손쉽게 새로운 인터페이스를 구..

Back-end Skill/JAVA 2022.04.04