SW공부 36일차

Guryena·2023년 2월 17일
0

CS

목록 보기
29/34

1. 제네릭(Generic)이란?

자바에서 제네릭(generic)이란 데이터의 타입(data type)을 일반화한다(generalize)는 것을 의미한다.

데이터 형식에 의존하지 않고, 하나의 값이 여러 다른 데이터 타입들을 가질 수 있도록 하는 방법이다.

제네릭은 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하는 방법이다.

이렇게 컴파일 시에 미리 타입 검사(type check)를 수행하면 다음과 같은 장점을 가진다.

  1. 클래스나 메소드 내부에서 사용되는 객체의 타입 안정성을 높일 수 있다

  2. 반환값에 대한 타입 변환 및 타입 검사에 들어가는 노력을 줄일 수 있다.

2. 아래가 돌아 가도록 짜시오.

   Box<Apple> aBox = new Box<Apple>();    // T를 Apple로 결정
   Box<Orange> oBox = new Box<Orange>();    // T를 Orange로 결정

   aBox.set(new Apple());   // 사과를 상자에 담는다.
   oBox.set(new Orange());   // 오렌지를 상자에 담는다.
   
   Apple ap = aBox.get();   // 사과를 꺼내는데 형 변환 하지 않는다.
   Orange og = oBox.get();   // 오렌지를 꺼내는데 형 변환 하지 않는다.

   System.out.println(ap); // 출력 : 이것은 사과 입니다.
   System.out.println(og); // 출력 : 이것은 오렌지 입니다.
public class Box {
	private Object ob;

	public void set(Object ob) {
		this.ob = ob;
	}

	public Object get() {
		return ob;
	}
}
public class Apple {

	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return "I am an apple";
	}
}
public class Orange {

	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return "I am an orange";
	}

}

3. 아래가 돌아 가도록 짜시오.

	Person<String, Integer> p = new Person<String, Integer>();
   p.set("홍길동", 25);
   System.out.println(box); //출력 : 홍길동 25 세 입니다. 
public class Person<NAME, AGE> {
	private NAME name;
	private AGE age;
	
	public void set(NAME name, AGE age){
		this.name = name;
		this.age = age;
	}

	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return name + " "  + age +"세 입니다.";
	}
	
	
}

0개의 댓글