발생일: 2008.09.03 문제: 메서드를 동기화 하려고 하는데, synchronized 와 static synchronized 의 차이점을 모르겠다. 해결책: synchronized method는 synchronized(this) { } 블럭으로 쓰는 것과 동일합니다. 즉, 현재 instance에 대해서만 동기화가 일어난다는 것이지요. 이 경우 해당 instance에서는 동기화가 일어나지만, 2개 이상의 instance가 있다면 각각의 instance에 대해 동기화가 일어나므로 두 개의 instance가 각각의 method를 실행하는 것이 가능합니다. 반면 static synchronized method의 경우는 해당 클래스의 클래스 객체에 대해 동기화가 일어납니다. 따라서, static 한 memb..
발생일: 2008.09.03 문제: 자바에서 dot(.)을 replace 하려고 하니 원하는 대로 되지 않는다. 해결책: dot(.)은 정규식에서 개행식을 제외한 아무 문자를 얘기한다. str.replaceAll(".", ""); 을 사용했을 경우, "." 이 정규식으로 적용되어 모든 문자를 ""으로 만들어버린다. dot을 dot 그대로 인식시키기 위해서는 \. 로 해줘야 한다. \ 또한 예약어이기 때문에 \\ 로 표시해줘야 한다. 고로, str.replaceAll("\\.", ""); 와 같이 해줘야 한다.
발생일: 2008.09.03 문제: 자바에서 객체를 담고 있는 리스트를 정렬하기 위해 Collections.sort() 를 사용하려고 한다. 객체의 정렬 순서를 어떻게 정해야 할까? 해결책: Comparator 를 구현해서 compare 메서드를 오버라이드 해준다. 예: package com.ohgyun.sortTest; import java.beans.Expression; import java.util.Comparator; public class BeanOrder implements Comparator { private String target; //정렬 대상 private boolean flag; //오름차순 내림차순 /** * 생성자 * @param target 정렬할 대상 * @param flag..
발생일: 2008.09.13 문제: Java에서 해당 bean에 대한 getter/setter를 동적으로 호출하고자 한다. 해결책: java.beans.Expression (java.beans.Statement를 상속) 을 사용한다. 생성자 Expression(Object value, Object target, String methodName, Object[] arguments) Expression(Object target, String methodName, Object[] arguments) value: expression의 결과값 target: 메서드를 호출할 객체 methodName: 호출할 메서드명 arguments: parameter로 넣을 인자 호출 예: A a = new A(); //a 객체..