목록2024/12 (3)
개발 기록
## 이왕이면 제네릭 타입으로 만들라 클래스 안에 다른 객체들을 담는 역할을 하는 클래스들은 제네릭 타입으로 만들면 유용하다.ex) stack- 제네릭을 사용할때 장점클라이언트 코드에서 형 변환 을 사용하지 않도록 만들 수 있다.또한 형 변환 을 잘못 사용했을 때 발생할 수 있는 ClassCastException 을 미연에 방지 할 수 있다.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_CAPACI..
jwt 검증 필터를 구현하던 중에 저렇게 노란 줄이 떴다.오버라이딩 메서드가 애너테이션으로 명시되지 않은 경우슈퍼클래스의 메서드에 @NotNull 또는 @Nullable 애너테이션이 지정되어 있는데,이를 서브클래스의 오버라이딩 메서드에서 반복하지 않으면 발생하는 문제 OncePerRequestFilter와 @NonNullApiSpring Web에서 OncePerRequestFilter는 org.springframework.web.filter 패키지에 위치.이 패키지에는 @NonNullApi가 패키지 수준에서 적용되어 있었다. 그래서 서브 클래스에도 적용시키라는 뜻이였다.// org.springframework.web.filter.package-info@NonNullApi@NonNullFieldspacka..
## 로 타입은 사용하지 말라 ### 로 타입 : 제네릭 타입에서 타입 매개변수를 전혀 사용하지 않은 것ex) List의 로 타입 : List- 쓰면 안 되는 이유 : 오류를 컴파일할 때가 아닌 런타임시 발견할 수 있다.ex) 실수도 Stamp 대신 Coin을 넣어도 아무 오류 없이 컴파일되고 실행됨.// 제네릭을 지원하기 전엔 컬렉션을 아래와 같이 선언했다.private final Collection stamps = ...;stamps.add(new Coin(...));for (Iterator it = stamps.iterator(); i.hasNext();) { Stamp stamp = (Stamp) i.next(); // ClassCastException stamp.cancel();}// 타입 ..