본문 바로가기

JAVA

(6)
[리팩토링] 분류코드를 클래스로 치환 분류코드를 int 같은 기본타입이라면 두가지 이유로 문제가 생긴다. 첫 번째로 분류 코드 범위 밖의 값이 사용되는 것이고 두번째로는 다른 분류 코드와 착각할 수 가 있ㄷ는 것이다. 타입이 판별되지 않거나 타입 세이프가 아닌 문제가 생긴다. 그런 문제를 해결하기 위해서 분류 코드를 클래스로 치환하는 리팩토링이 필요하다. 방법 1. 새로운 클래스를 작성해 기존 인터페이스(API)에서 사용 2. 새로운 인터페이스로 전환 3. 기존 인터페이스 삭제 결과적으로 장점으로는 분류 코드의 타입 판별이 가능해지고 단점으로는 클래스 개수가 늘어나는 것이다. public class Item { public static final int TYPECODE_BOOK = 0; public static final int TYPECO..
Java의 Future이란 Fruture - Blocking 방식의 작업 완료 통보 Future 객체는 작업이 완료될 때까지 기다렸다가 최종 결과를 얻는 데 사용된다. 이를 지연완료 (pending completion) 객체라고 한다. ExecutorService service = Executors.newSingleThreadExecutor(); Runnable task = new Runnable() { @Override public void run() { // blah } }; Future future = service.submit(task); try { future.get(); } catch (Exception e) { // handling } future.get() 작업이 정상적으로 완료되면 Future의 get()메소드는 ..
일급컬렉션 일급 컬렉션은 비즈니스에 종속적인 자료구조를 하나 만든다고 생각하면 된다. 이런 코드를 Map map = new HashMap(); map.put("1", "A"); map.put("2", "B"); map.put("3", "C"); 한번 감싸는 것을 의미합니다. public class GameRanking { private Map ranks; public GameRanking(Map ranks) { this.ranks = ranks; } } 장점은 상태와 행위를 한곳에서 처리할 수 있다는 것이다. 예를 들어 Rank값을 validation 하는 코드가 필요하다면 아래처럼 행위와 상태에 대한 행동을 GameRanking이라는 클래스에서 한번에 처리할 수 있다. public class GameRanking..
Java의 배열 Java에서 배열 이번에 java로 코드를 짜다가 int[] position 이라는 값을 hashMap에다가 저장해두려는 의도로 간략히 아래와 같이 코드를 짰습니다. int[] position = new int[4]; hashMap record = new hashMap(); for(int i = 0; i
Enum에 대해서 상수를 정의할 때 final static String 과 같은 방식으로 상수를 정의한다. 그것을 개선하기 나온 것이 enum class다. Enum의 장점 1. IDE 지원 : 동완성, 오타검증, 텍스트 리팩토링 등등 2. 허용가능한 값을 제한할 수 있다. 3. 리팩토링시 변경범위가 최소화된다. C/C++의 경우는 Enum이 결국 int 값이지만, Java의 경우는 Class이기 때문에 더 많은 장점이 있다. - 데이터들의 연관관계 표현 Enum을 사용하지 않으면 직접 메소드에서 각 값을 매칭해서 리턴해야 했다. 예를 들면 ("Y","true","1"), ("N","false","0") Enum에서는 표현할 수 있다. enum Enum{ Y("1", "true"), N("0", "false"); priv..
Reference 와 Garbage Collection Reference Object에서 알아보기 위해서 가비지에 대해서 빠르게 짚고 넘어가겠습니다. 가비지 컬렉터 힙 내의 객체중에 가비지를 찾아내 메모리 힙의 메모리 회수를 수행한다. JDK 1.2 부터는 java.lang.ref 패키지를 추가해 사용자 코드와 GC가 상호작용할 수 있게 하고 있다. 가비지 컬렉터 작동원리를 깊게 알고 싶다면 아래 사이트를 보는게 도움이 될 것 같습니다. 더보기 https://itmining.tistory.com/24 java.lang.ref 패키지 안 객체 참조 방식 Strong Reference 일반적으로 new를 이용해 생성된 객체로 GC에 무조건 제외된다. Soft Reference GC가 메모리가 부족하다고 판단할 때 수거하는 객체, 자주 사용할 수록 수거될 확률이 ..