generic은 wildcard와 달리 Lower Bounded를 지원하지 않는다. public Collection copy(Collection target) { } // 이건 되는데 public Collection copy(Collection target) { } // 이건 안됨 Type Erasure generic은 컴파일타임에 타입 안정성을 보장받는 것이다. Generics were introduced to the Java language to provide tighter type checks at compile time and to support generic programming. To implement generics, the Java compiler applies type erasure - ..
제네릭
제네릭이란? generic : 일반적인 클래스에서 사용하는 변수의 자료형이 여러개 이며 메소드는 동일한 경우, 클래스의 자료형을 특정하지 않고 추후 해당 클래스를 사용할 때 지정 할 수 있도록 선언한다. 컬렉션 프레임워크에서 많이 사용되고 있다. 제네릭은 타입에러의 발생을 방지한다. 런타임에서 타입 에러가 발생하는 것보다 컴파일 시에 미리 타입을 체크하여 에러를 사전에 방지하는 것이 좋다. 그렇다면 왜 굳이 제네릭을 사용해야 할까? 클래스의 멤버를 Object로 선언하여 모든 타입을 담을 수 있게 만들면 되지 않는가? Object는 문제점이 하나 존재한다. 필요에 의해 타입을 변환해줘야 한다는 점이다. 제네릭은 타입 변환을 제거한다. 코드에서 불필요한 타입 변환을 제거하여 프로그램 성능을 향샹 시킨다. ..