이펙티브 자바아이템 25. 톱레벨 클래스는 한 파일에 하나만 담으라소스파일에 톱레벨 클래스를 여러게 만들어도 자바 컴파일러는 문제가 없다.
아래는 Utensil.java 클래스에 톱레벨 클래스를 두개 지정해도 정상적이다.
123456789101112package com ...
이펙티브 자바아이템 24. 맴버클래스는 되도록 static으로 만들자ava 프로그래밍 언어를 사용하면 다른 클래스에서 클래스를 정의 할 수 있습니다.이러한 클래스는 중첩 클래스(Nested Classes) 라고하며 여기에 설명되어 있습니다.
12345678class O ...
이펙티브 자바아이템 23. 테그달린 클래스보다 클래스 계층구조를 활용하라.테그 달린 클래스의 단점은
여러 구현이 하나의 클래스에 담겨서 장황하고 오류를 내기 쉬우며 비효율 적이다.
테그 달린 구조는 클래스 계층구조의 아류일뿐이다.
1234567891011121314 ...
이펙티브 자바아이템 21. 인터페이스를 구현하는 쪽을 생각해 설계하라.java 8 이전에는 인터페이스를 해치지 않고 메서드를 추가할 방법이 없었지만 지금은 default 메소드가 생겼다.그렇다고 해서 모든 위험이 사라진것은 아니다.
생각할수 있느 모든상황에서 불변식을 ...
Java의 SimpleDateFormat은 thread-safe 하지 않다. multi-threaded 환경에서 조심히 사용하자1234567891011121314151617181920212223242526272829303132333435363738394041424344 ...
이펙티브 자바아이템 20. 추상 클래스 보다는 인터페이스를 우선하라자바는 단일상속만 되니 추상클래스는 단 하나만 구현할수 있다.인터페이스는 어떠한 상속을 했던간에 인터페이스가 선언한 메소드를 구현하고 있으면 같은 타입으로 인식한다.
그래서 기존 클래스에도 손쉽게 새로운 ...
이펙티브 자바아이템 19. 상속을 고려하고 설계하고 문서화 하라 그렇지 않으면 상속을 금지하라상속용 클래스는 재정의 할수 있는 매서드들을 내부적으로 어떻게 이용하는지 문서로 남겨야 된다.
이부분은 바로 직전 아이템인 18번에서 나왔듯이 상속을 했지만 내부사용을 상세하게 ...
이펙티브 자바아이템 18. 상속보단 컴포지션을 사용하라상속은 코드를 재사용하는 강력한 수단이지만 항상 최선은 아니다.
상속의 단점
매서드 호출과 달리 상속은 캡슐화를 깨뜨린다.
1234567891011121314151617181920212223242526272829 ...
이펙티브 자바아이템 17. 변경가능성을 최소화하라.불변 클래스란 인스턴스의 내부 값을 수정할 수 없는 클래스다.불변 인스턴스에 간직한 정보는 고정되어 객체가 파괴되는 순간까지 절대 달라지지 않는다.
클래스를 불변으로 만들려면 다음 다섯 가지 규칙을 따르면 된다.
객체 ...