Dev Books/Effective Java8 [item 25] 톱레벨 클래스는 한 파일에 하나만 담으라 이번 포스팅의 요약은 다음과 같다.1. 한 개의 파일에 한 개의 톱레벨 클래스만 둔다.2. (한 파일에 여러개를 두고 싶다면) 정적 멤버 클래스 방식을 사용한다.톱 레벨 클래스톱 레벨 클래스는 중첩 클래스가 아닌 클래스이다. 중첩 클래스는 "다른 클래스 안에 정의된 클래스"를 말한다. item 24 편에 정리해두었다.코드 코드를 통해 톱레벨 클래스에 대해 알아보자. 집기(Utensil)와 디저트(Dessert) 클래스가 Utensil.java라는 한 파일에 정의되어 있다, 그리고 Dessert.java 파일에도 집기, 디저트가 정의되어 있다. 무슨 문제가 발생할까?// Main.javapackage study.effectivejava.item25;public class Main { publi.. 2024. 6. 17. [item 28] 배열보다는 리스트를 사용하라 배열보다는 리스트를 사용하라배열과 제네릭 차이 1배열배열은 공변이다. (함께 변한다는 뜻이다.)Sub가 Super의 하위 타입이라면 배열 Sub[]는 배열 Super[]의 하위 타입이 된다.제네릭불공변이다.즉, 서로 다른 타입 Type1과 Type2가 있을 때, List은 List의 하위 타입도 아니고 상위 타입도 아니다.이것만 보면, 제네릭에 문제가 있다고 생각할 수도 있지만, 사실 문제가 있는 건 배열 쪽이다. 아래 코드를 보자. 배열 예시코드 : 런타임에 실패한다. 위 코드는 컴파일 단계에서는 문제가 없지만 런타임 단계에서 문제가 발생한다. 제네릭 예시코드 : 컴파일되지 않는다.List를 사용하면, 컴파일 단계에서 문제를 알 수 있게 된다.배열과 제네릭 차이 2배열배열은 실체화(reify)된다.배열.. 2024. 5. 31. [item 27] 비 검사 경고를 제거하라 비 검사 경고를 제거하라제네릭을 사용하기 시작하면 수많은 컴파일러 경고를 보게 될 것이다.비검사 형변환 경고비검사 메서드 호출 경고비검사 매개변수화 가변인수 타입 경고비검사 변환 경고그리고, 새로 작성한 코드가 한번에 깨끗하게 컴파일되리라 기대하지는 말자. 대부분의 비검사 경고는 쉽게 제거할 수 있다. 컴파일러가 알려준 잘못된 코드를 수정하면 경고가 사라진다.JAVA 7부터 지원하는 다이아몬드 연산자()만으로 해결할 수 있다. java Set exaltation = new HashSet();할 수 있는 한 모든 비검사 경고를 제거하라모두 제거하면 타입 안정성이 보장된다. 런타임에 ClassCastException이 발생할 일이 없고, 내가 의도한대로 잘 동작한다.@SuppressWarnings("unch.. 2024. 5. 31. [item 26] 로 타입은 사용하지 말라 로 타입은 사용하지 말라용어정리제네릭 클래스 혹은 제네릭 인터페이스클래스와 인터페이스 선언에 타입 매개변수(type parameter)가 쓰인다.Example.class제네릭 타입(generic type)제네릭 클래스와 제네릭 인터페이스를 통틀어 이르는 말.Example매개변수화 타입(parameterized type)각각의 제네릭 타입은 매개변수화 타입을 정의한다.Example타입 매개변수(Type parameter)제네릭 선언에 사용된 매개변수를 말한다.formal 타입특수문자나 키워드를 제외하고는 문자 형식에는 크게 상관없으며 대부분 한 글자로 대문자로 표현한다.콤마를 이용하여 여러 개를 선언할 수 있다.T,E 같은 문자들을 Formal Type Parameter라고 부른다.Exampleactual.. 2024. 5. 31. 이전 1 2 다음