본문 바로가기

Java26

아이템 25. 톱 레벨 클래스는 한 파일에 하나만 담으라 톱레벨 클래스라는 것은 파일에 정의되어있는 가장 바깥에 있는 클래스를 의미합니다. 가장 바깥에 있는 클래스가 여러개 있어도 컴파일하는데 문제는 없습니다. 하지만 한파일에는 톱레벨 클래스를 오직 하나만 선언하길 권장하고 있습니다. 그 이유는 한 파일에 톱 레벨 클래스가 여러개가 있다면 컴파일을 어떻게 하느냐에 따라서 결과가 달라질 수 있습니다. 어떤 클래스가 다른클래스에 종속적이라면 아이템24의 정적 멤버클래스를 사용하면 가독성도 좋고 private접근 지시자를 사용해서 클래스의 접근범위를 최소화 할 수 있습니다. 정적 멤버클래스로 선언 package me.whiteship.chapter04.item25; // 코드 25-3 톱레벨 클래스들을 정적 멤버 클래스로 바꿔본 모습 (151-152쪽) public.. 2023. 2. 5.
아이템 24. 멤버 클래스는 되도록 static으로 만들라 OutterClass내부의 정적 멤버 클래스 package me.whiteship.chapter04.item24.staticmemberclass; public class OutterClass { private static int number = 10; static private class InnerClass { void doSomething() { System.out.println(number); } } } InnerClass는 OutterClass의 내부에 있는 static 멤버 클래스 입니다. static 멤버 클래스인 InnerClass의 특징은 number와 같은 바깥에 있는 정적 필드에 접근을 할 수 있습니다. 또한 바깥클래스인 OutterClass를 필요로 하지 않고 독립적입니다. InnerC.. 2023. 2. 5.
아이템 23. 태그 달린 클래스 보다는 클래스 계층 구조를 활용하라 여기서 태그달린 클래스라는 건 클래스가 가지고 있는 필드 중에 일부가 그 클래스의 구체적인 타입을 나타내는 경우가 있습니다. 예를 들어 아래와 같은 Figure클래스가 있습니다. package me.whiteship.chapter04.item23.taggedclass; // 코드 23-1 태그 달린 클래스 - 클래스 계층구조보다 훨씬 나쁘다! (142-143쪽) class Figure { enum Shape { RECTANGLE, CIRCLE, SQUARE }; // 태그 필드 - 현재 모양을 나타낸다. final Shape shape; // 다음 필드들은 모양이 사각형(RECTANGLE)일 때만 쓰인다. double length; double width; // 다음 필드는 모양이 원(CIRCLE)일 때.. 2023. 2. 5.
아이템 22. 인터페이스는 타입을 정의하는 용도로만 사용하라 상수를 정의하는 용도로 인터페이스를 사용하지 말 것! package me.whiteship.chapter04.item22.constantinterface; // 코드 22-1 상수 인터페이스 안티패턴 - 사용금지! (139쪽) public interface PhysicalConstants { // 아보가드로 수 (1/몰) static final double AVOGADROS_NUMBER = 6.022_140_857e23; // 볼츠만 상수 (J/K) static final double BOLTZMANN_CONSTANT = 1.380_648_52e-23; // 전자 질량 (kg) static final double ELECTRON_MASS = 9.109_383_56e-31; } 위와 같이 인터페이스에 상수.. 2023. 2. 5.