본문 바로가기
728x90
반응형
SMALL

IT/JAVA45

Effective Java 2 - 규칙26 - "가능하면 제네릭 자료형으로 만들것" - 제네릭 자료형은 클라이언트가 형변환을 해야만 사용할 수 있는 자료형보다 안전할 뿐 아니라 사용하기도 쉽다. - 새로운 자료형을 설계할 때는 현변환 없이도 사용할 수 있도록 하라. - 시간 있을때 마다 기존 자료형을 제네릭 자료형으로 변환하라. - 기존 클라이언트 코드를 깨지 않고도 새로운 사용자에게 더 좋은 API를 제공할 수 있게 될 것이다. 제네릭 자료형을 직접 만드는 것은 까다롭지만 배울만한 가치는 있다. 아래의 source code 를 살펴 보자.public class Stack { private Object[] elements; private int size; private static final int DEFAULT_INITIAL_CAPACITY = 16; public Stack() { e.. 2016. 8. 6.
Effective Java 2 - 규칙25 - "배열 대신 리스트를 써라" 아래의 코드는 문법적으로는 문제가 없다. // 실행 중에 문제를 일으킴 Object[] objectArr = new Long[1];l objectArr[0] = "I am younghoi kim"; // ArrayStoreException 발생하지만 아래의 코드는 아예 컴파일이 되지 않는다. // 컴파일 되지 않는 코드 List oList = new ArrayList(); // 자료형 불일치 oList.add("I am younghoi kim");둘다 자료형 안에 String 객체를 넣을 수 없다는 것은 동일하다. 컴파일 시에 문제를 발견하는 편이 더 낫다. 성능이 저하되고나 코드가 길어질 수는 있겠으나, 형 안전성과 호환성은 좋아진다. 만일 배열과 제네릭을 뒤섞어 쓰다가 컴파일 오류나 경고 메시지를 만.. 2016. 8. 6.
Effective Java 2 - 규칙24 - "무점검 경고(unchecked warning)를 제거하라" - 무점검 경고는 중요하다. 무시하지 마라. - 모든 무점검 경고는 프로그램 실행 도중에 ClassCastException이 발생할 가능성을 나타낸다. - 최선을 다해 그런 메시지를 제거하라. - 제거할 수 없는 경우 형 안정성을 보장한다는 사실을 입증할 수 있다면, @SuppressWarning("unchecked") annotation을 사용해 해당 경고를 억제하라. - 어노테이션 적용 범위는 최소화 하라. - 경고 메시지를 억제한 이유를 주석에 써 놓아야 한다. // @SuppressWarnings의 적용 범위를 줄이기 위해 지역 변수 사용 public T[] toArray(T[] a) { if ( a.length size ) { a[size] = null; } return a; } 2016. 8. 6.
Java 에서 브라우저 확인 하기 - IE11 에서 사라진 MSIE.... IE 10 까지만 해도 request 의 header 에 User-Agent 부분을 읽어서 "MSIE" 라는 text 가 있으면 IE 에서 호출한 것으로 판단할 수 있었다. 그런데 IE11 에서 갑자기 MSIE 속성이 사라졌다.!! IE 10 의 User-Agent 속성은 아래와 같다. Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0) IE 11 의 경우는 아래와 같다. Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko IE 는 Trident 토큰으로 판별하는 것이 더 좋을 것 같다... 아 물론 IE6은 제외..ㅡㅡ.. 결론 HttpServletReq.. 2016. 7. 29.
728x90
반응형
LIST