본문 바로가기

제네릭3

제네릭 타입의 상속과 구현 // Parent.java public class Parent { private kind; private model; public void setKind(T kind) { this.kind = kind; } public void setModel(M model) { this.model = model; } public T getKind() { return kind; } public M getModel() { return model; } } class Tv{} // Child.java public class Child extends Parent { private C company; public void setCompany(C company) { this.company = company; } public C g.. 2020. 4. 6.
제한된 타입 파라미터 숫자를 연산하는 제네렉 메소드는 매개값으로 Number 타입 또는 하위 클래스인 Byte, Short, Integer, Long, Double 의 인스턴스만 가져야 한다. 이것이 제한된 타입 파라미터가 필요한 이유이다. 제한된 타입 파라미터를 사용하려면 타입 파라미터 뒤에 extends로 클래스명이나 인터페이스명을 명시하면 된다. public 리턴타입 메소드(매개변수, ...) {...} 타입 파라미터에 지정되는 구체적인 타입은 상위 타입이거나 상위 타입의 하위 또는 구현 클래스만 가능하다. 주의할 점은 메소드의 중괄호 {} 안에서 타입 파라미터 변수로 사용 가능한 것은 상위 타입의 멤버(필드, 메소드)로 제한된다. 다음 제한 타입 파라미터를 적용한 예제이다. // Util.java public clas.. 2020. 4. 6.
제네릭 제네릭 타입을 이용함으로써 잘못된 타입이 사용될 수 있는 문제를 컴파일 과정에서 제거할 수 있게 되었다. 제네릭은 클래스, 인터페이스, 메소드를 정의할 때 타입을 파라미터로 사용할 수 있도록 한다. 파라미터는 코드 작성 시 구체적인 타입으로 대체되어 다양한 코드를 생성하도록 해준다. 제네릭은 컴파일 시에 타입을 체크하는데 이것은 실행 시 타입 에러가 나는 것보다 컴파일 시에 미리 타입을 체크해서 에러를 방지하는 것이 좋기 때문이다. 또한 제네릭을 사용하면 타입 변환을 제거한다. // 제네릭을 사용하지 않은 경우. List list = new ArrayList(); list.add("hello"); String str = (String) list.get(0); // list에 있는 문자열을 가져오기 위해서.. 2020. 4. 6.