저장 타입을 계약에 넣지 않으면 호출자마다 같은 값을 다른 타입으로 캐스팅할 수 있습니다.
문자열 저장 허용 → 나중 Integer cast 실패
add(E)에서 차단 → get():E 보장
이전 값도 E로 반환
핵심: E를 add·get·set 전체에 연결하고 unchecked 경고는 내부 검증 지점 하나에만 둡니다.