goal
Generic class를 이해한다.
1. Generic class
- generic은 data type을 일반화할 때 사용한다.
- generic은 class나 method에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하는 방법이다.
- 컴파일시에 미리 타입 검사(type check)를 수행하면 아래와 같은 이점을 가진다.
- 클래스나 메소드 내부에서 사용되는 객체의 타입 안정성을 높일 수 있다.
- 반환값에 대한 타입 변환 및 타입 검사에 들어가는 노력을 줄일 수 있다.
class MyArray <T> {
T element;
void setElement(T element){ this.element = element; }
T getElement() { return this.element; }
}
- T를 Type Variable이라고 하며, 임의의 참조형 타입을 의미한다.
- T는 쉼표(,)로 구분하여 여러개 명시가 가능하다.
- Type Variable은 클래스에서뿐만 아니라 메소드의 매개변수나 반환값으로 사용할 수 있다.
- Generic class 생성시 타입 변수 자리에 사용할 실제 타입을 명시해야한다.
-
MyArray<Integer> myArr = new MyArray<Integer>(); MyArray<Integer> myArr = new MyArray<>();
- MyArray myArr = new MyArray<>(); 경우 JDK 1.7이상부터 지원
-
1. generic class 코드 예제
import java.util.ArrayList;
class LandAnimal{
public void crying() {
System.out.println("어떤 동물의 울음소리일까?");
}
}
class Cat extends LandAnimal{
public void crying() {
System.out.println("멍멍");
}
}
class Dog extends LandAnimal{
public void crying() {
System.out.println("야옹야옹");
}
}
class AnimalList <T> {
ArrayList<T> al = new ArrayList<T>();
void add(T animal) { al.add(animal); }
T get(int index) { return al.get(index); }
boolean remove(T animal) { return al.remove(animal);}
int size() { return al.size(); }
}
public class generic01 {
public static void main(String[] args) {
// TODO Auto-generated method stub
AnimalList<LandAnimal> landAnimal = new AnimalList<LandAnimal>();
landAnimal.add(new LandAnimal());
landAnimal.add(new Cat());
landAnimal.add(new Dog());
for (int i=0; i < landAnimal.size(); i++) {
landAnimal.get(i).crying();
}
}
}
'Java > java' 카테고리의 다른 글
java :) interface와 abstract의 공통점과 차이점 (0) | 2022.04.22 |
---|---|
java :) generic method (0) | 2022.03.14 |
java :) clone()메소드( + interface Cloneable) (0) | 2022.03.13 |
java :) interface (0) | 2022.03.13 |
java :) 20220311 java 복습 (0) | 2022.03.11 |