Stack
-
Item 29. 이왕이면 제네릭 타입으로 만들라Book/Effective Java 3E 2022. 11. 12. 10:30
Item 7의 스택 코드는 제네릭 타입이어야 마땅합니다. 제네릭으로 바꾼다고 해도 현재 버전을 사용하는 클라이언트에는 아무런 해가 없습니다. 오히려 지금 상태에서의 클라이언트는 스택에서 꺼낸 객체를 형변환해야 하는데, 이때 런타임 오류가날 위험이 있습니다. 일반 클래스를 제네릭 클래스로 만드는 첫 단계는 클래스 선언에 타입 매개변수를 추가하는 일입니다. 이때 타입 이름으로는 보통 E를 사용합니다(Item 68). 그런 다음 Object를 적절한 타입 매개변수로 바꾸고 컴파일해봅시다. 이 단계에서 대체로 하나 이상의 오류나 경고가 발생합니다(Stack 클래스 생성자 부분: elements = new E[DEFAULT_INITIAL_CAPACITY];). E와 같은 실체화 불가 타입으로는 배열을 만들 수 없..
-
Item 7. 다 쓴 객체 참조를 해제하라Book/Effective Java 3E 2022. 10. 12. 22:07
아래 코드는 스택을 간단히 구현한 코드입니다. package effectivejava.chapter2.item7; import java.util.*; // 코드 7-1 메모리 누수가 일어나는 위치는 어디인가? 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 po..