README Item 08 : equals를 재정의할 때는 일반 규약을 따르라 (Obey the general contract when overriding equals) equals() 를 재정의(overriding) 안해도 될 때 각각의 객체가 고유(unique)할 때 클래스에 "논리적 동일성(logical equality)" 검사 방법이 있건 없건 상관없을 때 상위 클래스에서 재정의한 equals()를 하위클래스에서 사용해도 문제없을 때 클래스가 private또는 package-private로 선언되었고, equals()를 호출할 일이 없을 때 euqals()를 재정의 해야할 때 객체 동일성(object equality)이 아닌 논리적 동일성(logical equality)의 개념을 지원하는 클래스일..
README Item 06 : 유효기간이 지난 객체 참조는 폐기하라 (Eliminate obsolete object references) 메모리 누수(Memory Leak) 방지하기 자체적을 메모리를 관리하는 클래스 캐시 (Cache) 리스너 (listener) 유효기간이 지난 객체 참조를 폐기하여 메모리 누수(memory Leak) 을 방지하자! 1. 자체적을 메모리를 관리하는 클래스를 만들 때는 메모리 누수(Memory Leak)가 발생하지 않도록 해야한다. 더 이상 사용되지 않는 원소 안에있는 객체 참조는 null로 바꾸자 Stack.class public synchronized E pop() { E obj; int len = size(); obj = peek(); removeElementAt(le..
README Item 04 : 객체 생성을 막을 때는 private 생성자를 사용하라 (Enforce noninstantiability with a private constructor) 객체 생성을 막는 것에는 어떤것들이 있을까? java.lang.Math java.util.Arrays java.util.Collections (위 클래스들은 객체를 만들 목적의 클래스가 아니다.) 1. java.lang.Math public final class Math { /** * Don't let anyone instantiate this class. */ private Math() {} public static final double PI = 3.14159265358979323846; public static in..
README Item 03 : 싱글톤을 쓸때 property는 private 생성자나 enum타입으로 하라 (Enforce the singleton property with a private constructor or an enum type) 싱글톤 만드는법 using public final field using static Factory using Enum (결론: 1번 쓰지마라) 1. Using public final field public class Elvis { public static final Elvis INSTANCE = new Elvis(); private Elvis(){...} public void leaveTheBuilding(){...} } 문제점 reflection으로 private..
README Item 02 : 생성자 인자가 많을 때는 Builder패턴 적용을 고려하라 (Consider a builder when faced with many constructor parameters) 아래에서 소개될 패턴들 Telescoping constructor pattern JavaBeans Pattern Builder Pattern (결론: Builder Pattern 을 써라.) 1. Telescoping constructor pattern public class NutritionFacts { private final int servingSize; // (mL) required private final int servings; // (per container) required private..
README Item 01 : 생성자 대신 static factory method를 사용할 수 없는지 생각해 보라 (Consider static factory methods instead of constructors) 정적 팩토리 메서드 (static factory method) 장단점 First Adventage 생성자와는 달리, static factory method들은 이름을 붙일 수 있다. (unlike constructors,static factory methods have names.) public class Member { private String memberName; private String memberPhone; //member1 생성자 public Member(String membe..