이펙티브 자바

💬 언어/이펙티브 자바

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

Item 20 추상 클래스보다는 인터페이스를 우선하라 🟧 추상 클래스, 인터페이스 - 상속과 확장 추상 클래스 다중 상속이 불가능하다. 한 번 상속하면 이후에 확장하기 힘들다. 인터페이스 다중 상속이 가능하다. 기능을 추가하기 용이하다. 🤔 그러면 계속해서 확장가능한 인터페이스만 사용하면 되잖아 ?? (제목부터 인터페이스를 우선시하라는데 ??) 왜 그런 말이 나왔는지 일단 더 알아보자구요 ~ 🙅‍♂️ 먼저 추상 클래스와 인터페이스의 목적은 다릅니다. 🙅‍♂️ 🟧 목적이 다르고 차이점이 존재한다. 추상 클래스 상속받아 구현된 기능을 이용하고, 확장시킨다. 인터페이스 구현을 강제하기 때문에 같은 동작을 보장한다. 추상 클래스는 기존 기능을 이용해서 확장하고 인터페이스는 구현을 강제한다고..? 추상 클래스와 ..

💬 언어/이펙티브 자바

[이펙티브 자바] Item 49 - 매개변수가 유효한지 검사하라

Item 49 매개변수가 유효한지 검사하라 메서드나 생성자에 입력되는 매개변수들이 정상적인 데이터인지 검사하는 것은 중요합니다. 매개변수 검사를 제대로 하지 않는다면 다음과 같은 결과가 발생할 수 있습니다. 예상치 못한 동작이 발생할 수 있다. 잘못된 결과를 반환할 수 있다. 예외를 던지면서 애플리케이션 동작이 중단된다. 잘못될 수 있는 상황들을 예시로 보겠습니다. 🟧 예상치 못한 동작이 발생할 수 있다. 메서드는 정상적으로 실행됐으나 다른 객체를 잘못된 상태로 바꿔놓을 수 있습니다. Deck에서 카드를 뽑을 때 문제 없이 카드를 가져와야 정상적인 동작입니다. 하지만 덱을 생성할 때 빈 컬렉션이 매개변수로 들어갔습니다. Deck deck = new Deck(initData()); 아무런 문제가 없다고 생..

💬 언어/이펙티브 자바

[이펙티브 자바] Item 26 - Raw Type은 사용하지 말라

Item 26 Raw Type을 사용하지 말라. ✅ Raw Type? Raw Type은 제네릭 타입에서 타입 파라미터를 사용하지 않은 때를 의미합니다. 오라클 공식 문서를 보면 다음과 같이 기재되어 있습니다. 4.8. Raw Types To facilitate interfacing with non-generic legacy code, it is possible to use as a type the erasure (§4.6) of a parameterized type (§4.5) or the erasure of an array type (§10.1) whose element type is a parameterized type. Such a type is called a raw type. 제네릭을 사용하지 ..

hyena0608
'이펙티브 자바' 태그의 글 목록