자바공부

· BE/Java
이 포스팅에서 작성하는 내용은 EFFECTIVE JAVA(이펙티브자바) 에서 발췌하였습니다. 아이템 35. ordinal 메서드 대신 인스턴스 필드를 사용하라 ordinal 메서드 대부분의 열거 타입 상수는 자연스럽게 하나의 정숫값에 대응된다. 모든 열거 타입은 해당 상수가 그 열거 타입에서 몇 번째인지 위치를 반환하는 ordinal 메서드를 제공한다. 위의 이유로 열거 타입 상수와 연결된 정숫값이 필요하면 ordinal 메서드를 이용할 수 있는데 결론적으로 이는 위험하다. ex1) ordinal을 잘못 사용한 코드 public enum Ensemble { SOLO, DUET, TRIO, QUARTET, QUINTET, SEXTET, SEPTET, OCTET, NONET, DECTET; public in..
· BE/Java
이 포스팅에서 작성하는 내용은 EFFECTIVE JAVA(이펙티브자바) 에서 발췌하였습니다. 아이템 31. 한정적 와일드카드를 사용해 API 유연성을 높이라 매개변수화 타입은 불공변이다. 즉, 서로 다른 타입 Type1과 Type2가 있을 때 List은 List의 하위 타입도 상위 타입도 아니다. 즉, List은 List의 하위 타입이 아니라는 뜻 (List는 어떤 객체든 넣을 수 있지만, List에는 문자열만 넣을 수 있기 때문) 불공변 방식보다 유연해지기 ex 1) Stack 클래스 public class Stack { public Stack(); public void push(E e); public E pop(); public boolean isEmpty(); } 위의 코드에 일련의 원소를 스택에 ..
· BE/Java
이 포스팅에서 작성하는 내용은 EFFECTIVE JAVA(이펙티브자바) 에서 발췌하였습니다. 아이템 30. 이왕이면 제네릭 메서드로 만들라 제네릭 메서드 클래스와 마찬가지로 메서드도 제네릭으로 만들 수 있다. 매개변수화 타입을 받는 정적 유틸리티 메서드는 보통 제네릭이다. ex 1) 두 집합의 합집합을 반환하는 코드(문제 발생) public static Set union(Set s1, Set s2) { Set result = new HashSet(); result.addAll(s2); return result; } 위의 코드는 컴파일은 되지만 경고가 2개 발생한다. 경고를 없애려면 이 메서드를 타입 안전하게 만들어야 한다. 메서드 선언에서의 세 집합(입력 2개, 반환 1걔)의 원소타입을 타입 매개변수로 ..
· BE/Java
이 포스팅에서 작성하는 내용은 EFFECTIVE JAVA(이펙티브자바) 에서 발췌하였습니다. 아이템 29. 이왕이면 제네릭 타입으로 만들라 JDK가 제공하는 제네릭 타입과 메서드를 사용하는 건 쉬운 편이지만, 제네릭 타입을 새로 만드는 일은 조금 더 어렵다. ex 1) Object 기반 Stack. (제네릭이 필요함) 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..
멍목
'자바공부' 태그의 글 목록 (3 Page)