effective java

Old Posts/Effecttive Java

Item08. equals를 재정의할 때는 일반 규약을 따르라

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)의 개념을 지원하는 클래스일..

Old Posts/Effecttive Java

Item06. 유효기간이 지난 객체 참조는 폐기하라

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..

Old Posts/Effecttive Java

Item05. 불필요한 객체는 만들지 말라

README Item 05 : 불필요한 객체는 만들지 말라 (Avoid creating unnecessary objects) 불필요한 객체 만들지 않는법 String static factory method static initializer Wrapper class 1. String String s1 = new String("ABC"); String s2 = new String("ABC"); System.out.println(s2 == s1); //false(참조값 다름) s1, s2에서 각각 객체생성을 했으므로 힙영역에 객체 2개가 생성이 된다. String.class는 불변 클래스(immutable class)라서 같은 문자열을 다른 객체로 만들 이유가 없다. 객체 하나를 생성하고 같은 참조값을 가지면..

Old Posts/Effecttive Java

Item04. 객체 생성을 막을 때는 private 생성자를 사용하라 <이펙티브자바>

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..

Old Posts/Effecttive Java

Item03. 싱글톤을 쓸 때 property는 private 생성자나 enum타입으로 하라 <이펙티브자바>

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..

Old Posts/Effecttive Java

Item02. 생성자 인자가 많을 때는 Builder패턴 적용을 고려하라 <이펙티브자바>

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..

Old Posts/Effecttive Java

Item01. 생성자 대신 static factory method를 사용할 수 없는지 생각해 보라 <이펙티브자바>

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..

bactoria
'effective java' 태그의 글 목록