GENERIC
-
지네릭스(Generics)와 Iterator & HashMap백엔드/자바 2021. 5. 22. 18:10
지네릭스와 Iterator 위와 같은 Student라는 일반 클래스가 있다고 가정해보자. 그리고 Student 클래스의 객체를 리스트에 저장한 다음 Iterator()메서드를 이용해서 Iterator 객체를 호출해서 리스트에 저장된 Student 객체의 이름을 출력하는 코드가 있다고 가정하자. 이때 Iterator객체의 next() 메서드는 Object 자료 타입으로 객체를 반환한다. 그렇기 때문에 Student의 변수인 s에 객체를 저장할 때 별도로 Student로 캐스팅을 한 것이다. 그런데 Iterator 객체를 호출할 때 지네릭스를 쓴다면 코드를 간결하게 쓸 수 있다. 위와 같이 미리 Iterator 객체를 호출할 때 지네릭스를 써서 이용할 객체를 미리 써두면 캐스팅이 필요없다. 그래서 훨씬 간결..
-
지네릭스(Generics) - 지네릭 메서드백엔드/자바 2021. 5. 22. 17:19
이전 지네릭스 관련 포스트에서 타입 매개변수는 사용 제한이 있다고 했다. static 멤버와 같이 쓰여질 때고 또 하나는 일반 클래스에서 사용될 때라고 했다. 이렇게 일반 클래스의 경우 타입 매개변수는 사용할 수 없어 컴파일 에러가 나는 것을 볼 수 있다. 지네릭 클래스라하더라도 static 메서드에선 타입 매개변수도 컴파일 에러가 나는 것을 볼 수 있다. 그럼 위처럼 타입 매개변수를 써준 것은 무엇일까? 이렇게 메서드의 선언부에 지네릭 타입이 선언된 메서드를 지네릭메서드라 한다. 하지만 지네릭 메서드의 는 우리가 아는 타입 매개변수 와는 다르다. 지네릭 메서드 우선 위와 같은 클래스들이 있다고 가정해보자. 이중에서 genericsMethod 클래스를 위와 같이 지네릭 클래스로 변경해보자. 이때 첫번째는..
-
지네릭스(Generics) - 와일드카드백엔드/자바 2021. 5. 21. 13:21
우선 지네릭스에 관해서 이전에 포스팅한 내용이 있다. 2021.05.21 - [백엔드/자바] - 지네릭스(Generics) - 와일드카드, 지네릭 메서드 거기서 예제 코드가 이어진다. 그래서 그 코드가 있어야 아래 내용을 이해할 수 있다. 시작하기 전에 간단히 코드들을 정리하면 다음과 같다. Box 클래스 class Box{ ArrayList list = new ArrayList(); void add(T item){ list.add(item); } T get(int i) { return list.get(i); } ArrayList getList(){ return list; }; @Override public String toString() { return list+""; } } Box를 상속받은 Frui..
-
지네릭스(Generics) - 지네릭 extends, 지네릭의 한계백엔드/자바 2021. 5. 21. 13:13
지네릭스(Generics) - 지네릭 소개, 지네릭 클래스 지네릭스란(Generics)란? 다양한 타입의 객체를 다루는 메서드, 컬렉션에 입력 가능한 객체를 제한하게 하는 기능이다. 좀 더 직관적으로 쓰자면 특정 메서드나 컬렉션에 들어가는 자료형을 제한 sgcomputer.tistory.com 이전에 글에서 지네릭스에 대해서 설명했는데, 예제는 거기서 쭉 이어서 진행하도록 할 예정이다. 제한적인 지네릭 타입 사용 class Box{ ArrayList list = new ArrayList(); void add(T item){ list.add(item); } T get(int i) { return list.get(i); } ArrayList getList(){ return list; }; @Override ..