이펙티브 자바 Effective Java 2/E국내도서저자 : 조슈아 블로크(Joshua Bloch) / 이병준역출판 : 인사이트 2014.09.01상세보기 Cloneable 인터페이스는 protected 으로 선언된 object의 clone메서드가 어떻게 동작할지 정한다. 만일 어떤 클래스가 Cloneable을 구현하면, Object의 clone 메서드는 해당 객체를 필드 단위로 복사한 객체를 반환한다. Clone 메서드의 일반 규약 1. x.clone() != x 2. x.clone().getClass() == x.getClass() 3. x.clone().equals(x) 1번은 항상 참이여야 하지만 2, 3번은 꼭 그래야만 하는건 아니다. 또한, 객체를 복사하면 보통 같은 클래스의 새로운 객체가 ..
이펙티브 자바 Effective Java 2/E국내도서저자 : 조슈아 블로크(Joshua Bloch) / 이병준역출판 : 인사이트 2014.09.01상세보기 Object 클래스가 제공하는 toString() 메서드는 일반적으로 사용자가 보려는 형태가 아니다. @ 기호와 16진수로 표현된 해시 코드가 붙은 문자열로 "PhoneNumber@163b91" 형태다. 가능하다면 객체 내의 중요 정보를 전부 담아 반환해야 한다. toString()이 반환하는 문자열의 형식을 명시하건 그렇지 않건 간에, 어떤 의도인지는 문서에 분명하게 남겨야 한다. => 의도가 남아있지 않은 toString() 을 다른 프로그래머들이 마음대로 사용하게 된다면 차후에 변경이 어렵다. toString()이 반환하는 문자열에 포함 되는 ..
이펙티브 자바 Effective Java 2/E국내도서저자 : 조슈아 블로크(Joshua Bloch) / 이병준역출판 : 인사이트 2014.09.01상세보기equals 메서드를 재정의하는 클래스는 반드시 hashCode 메서드도 재정의 해야 한다. 재정의하지 않으면 HashMap, HashSet, Hashtable 같은 Hash기반 컬렉션과 함께 사용할때 오작동하게 된다. public final class PhoneNumber { private final short areaCode; private final short prefix; private final short lineNumber; @Override public boolean equals(Object o) { if (0 == this) return..
이펙티브 자바 Effective Java 2/E국내도서저자 : 조슈아 블로크(Joshua Bloch) / 이병준역출판 : 인사이트 2014.09.01상세보기 equals 를 메소드를 재정의할때는 실수할 여지가 많지만 그렇다고 재정의하지 않기에는 객체는 자기 자신과만 동일하기 때문에 불편함이 따른다. 객체가 자기 자신과만 동일한 equals 메서드를 사용해도 되는 경우. 아래 가운데 하나만 만족한다면 equals 메서드를 재정의 하지 않아도 된다. 1 .각각의 객체가 고유하다 => 값(value) 대신 활성 개체(active entitiy)를 나타내는 Thread 같은 클래스가 이 조건에 부합하다. 2. 클래스에 "논리적 동일성(logical equality)" 검사 방법이 있건 없건 상관없다. => Ra..
이펙티브 자바 Effective Java 2/E국내도서저자 : 조슈아 블로크(Joshua Bloch) / 이병준역출판 : 인사이트 2014.09.01상세보기 종료자(finalizer)는 예측 불가능하며, 대체로 위험하고, 일반적으로 불필요하다. 종료자가 뭔지 부터 알아보자. /** * Called by the garbage collector on an object when garbage collection * determines that there are no more references to the object. * A subclass overrides the {@code finalize} method to dispose of * system resources or to perform other cle..
이펙티브 자바 Effective Java 2/E국내도서저자 : 조슈아 블로크(Joshua Bloch) / 이병준역출판 : 인사이트 2014.09.01상세보기 기능적으로 동일한 객체는 필요할 때 마다 만드는 것보다 재사용 하는 편이 낫다. 변경 불가능한(immutable) 객체는 언제나 재사용할 수 있다. 극단적인 예제 String s = new String("stringette");String 생성자에 전달되는 "stringette" 자체가 string 객체이다. String s = "stringette";위 방법이 바람직 하다 또 다른 극단적인 예제 public class Person { private final Date birthDate; public boolean isBabyBoomer() { Ca..
이펙티브 자바 Effective Java 2/E국내도서저자 : 조슈아 블로크(Joshua Bloch) / 이병준역출판 : 인사이트 2014.09.01상세보기 Memory Leak 예제 public class Stack { private Object[] elements; private int size = 0; private static final int DEFAULT_INITIAL_CAPACITY = 16; public Stack() { elements = new Object[DEFAULT_INITIAL_CAPACITY]; } public void push(Object e) { ensureCapacity(); elements[size++] = e; } public Object pop() { if (size..
이펙티브 자바 Effective Java 2/E국내도서저자 : 조슈아 블로크(Joshua Bloch) / 이병준역출판 : 인사이트 2014.09.01상세보기 Effective Java 에서는 정적 메서드나 필드만 모은 클래스가 필요할 때가 있다고 한다. 1. 자바의 기본 자료형 값 또는 배열에 적용되는 메서드 ( java.lang Math , java.util.Arrays ) 2. 특정 인터페이스를 구현하는 객체를 만드는 팩터리 메서드 등으 정적 메서드의 모임 위 경우의 클래스들은 유틸리티 클래스로서 객체를 만드는 목적의 클래스가 아니다. 따라서 객체를 만드는 생성자가 있으면 더 어색하지만 컴파일러는 자동으로 인자가 없는 public 기본 생성자를 생성한다. 이런 경우에 private 생성자를 이용하여 ..
이펙티브 자바 Effective Java 2/E국내도서저자 : 조슈아 블로크(Joshua Bloch) / 이병준역출판 : 인사이트 2014.09.01상세보기 싱글턴은 객체를 하나만 만들 수 있는 클래스다. 싱글턴 패턴 구현 1 //생성자를 private 으로 선언하고 public static 필드로 인스턴스를 저장. public class Elvis { public static final Elvis INSTANCE = new Elvis(); private Elvis() {...} public void leaveTheBuilding() {...} }싱글턴 패턴 구현 2//정적 팩터리를 이용한 싱글턴 패턴 public class Elvis { private static final Elvis INSTANCE ..
이펙티브 자바 Effective Java 2/E국내도서저자 : 조슈아 블로크(Joshua Bloch) / 이병준역출판 : 인사이트 2014.09.01상세보기 영양 성분표를 나타내는 클래스가 있다고 가정해보자 클래스의 필드 1. 총 제공량 2. 1회 제공량 3. 1회 제공량당 칼로리 4. 총 지방 함량 . . . 위 클래스를 코드로 나타내면 다음과 같다. public class NutritionFacts { private final int servingSize; private final int servings; private final int calories; private final int fat; private final int sodium; private final int carbohydrate; p..
- Total
- Today
- Yesterday
- spring cloud gateway
- HashMap
- AbstractMethodError
- dynamodb
- ResultSet
- notify()
- reative
- msyql-connector-java
- RouteDefinition
- referencedColumnName
- wait()
- router
- custom config data convertion
- rate limit
- ConcurrentHashMap
- notifyAll()
- GlobalFilter
- Flux
- DyanomoDB
- N+1
- mariadb-connector-j
- Seperate Chaining
- Lazy
- getBoolean
- circurit breaker
- MariaDB
- RoutePredication
- mariada-connector
- aurora
- reactor
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |