Reference/Effective-Java

    [Effective-Java] Chapter5 #26. 로 타입은 사용하지 말라

    ✒️ 핵심 정리 로 타입을 사용하면 런타임에 예외가 일어날 수 있으니 사용하면 안 된다. 로 타입은 제네릭이 도입되기 이전 코드와의 호환성을 위해 제공될 뿐이다. 더보기 💻 용어 정리 한글 용어 영문 용어 예 아이템 매개변수화 타입 parameterized type List 26 실제 타입 매개변수 actual type parameter String 26 제네릭 타입 generic type List 26, 29 정규 타입 매개변수 formal type parameter E 26 비한정적 와일드카드 타입 unbounded wildcard type List 26 로 타입 raw type List 26 한정적 타입 매개변수 bounded type parameter 29 재귀적 타입 한정 recursive ty..

    [Effective-Java] Chapter4 #25. 톱레벨 클래스는 한 파일에 하나만 담으라

    소스 파일 하나에는 반드시 톱레벨 클래스(혹은 인터페이스)를 하나만 담자. * 중첩 클래스는 top level class가 아님 📌 문제 상황 Utensil.java class UtenSil { static final String NAME = "pan"; } class Dessert { static final String NAME = "cake"; } Dessert.java class UtenSil { static final String NAME = "pot"; } class Dessert { static final String NAME = "pie"; } Main.java class Main { public static void main(String[] args) { System.out.println(..

    [Effective-Java] Chapter4 #24. 멤버 클래스는 되도록 static으로 만들라

    💯 핵심 정리 중첩 클래스에는 네 가지가 있으며, 각각의 쓰임이 다르다. 메서드 밖에서도 사용해야 하거나 메서드 안에 정의하기엔 너무 길다면 멤버 클래스로 만든다. 멤버 클래스의 인스턴스 각각이 바깥 인스턴트를 참조한다면 비정적, 그렇지 않다면 static으로 만든다. 중첩 클래스가 한 메서드 안에서만 쓰이면서, 그 인스턴스 생성 지점이 단 한 곳이고, 해당 타입으로 쓰기에 적합한 클래스나 인터페이스가 이미 있다면 익명 클래스로 만들고, 아니면 지역 클래스로 만들어라. 📌 중첩 클래스(nested class)란? 다른 클래스 안에 정의된 클래스로써 자신을 감싼 바깥 클래스에서만 쓰여야 한다. static 멤버 클래스 non-static 멤버 클래스 익명 클래스 지역 클래스 중첩 클래스를 사용하는 이유는 ..

    [Effective-Java] Chapter4 #23. 태그 달린 클래스보다는 클래스 계층구조를 활용하라

    태그 클래스란 두 가지 이상의 의미를 표현할 때, 그 중 현재 표현하는 의미를 태그(플래그)값으로 알려주는 클래스다. 📌 살면서 처음 본 태그 달린 클래스 책에 나온 원과 사각형을 표현할 수 있는 클래스다. (이런 식으로 코드를 작성하는 개발자가 있다고?) class Figure { enum Shape { RECTANGLE, CIRCLE }; // 태그 필드 final Shape shape; // shape가 RECTANGLE일때만 사용 double length; double width; // shape이 CIRCLE 일때만 사용 double radius; // 원용 생성자 Figure(double radius){ shape = Shape.CIRCLE; this.radius = radius; } // 사..