IT 면접 족보36

권단비·2023년 2월 17일
0

IT

목록 보기
76/139

1. 지네릭(Generic)이란?

▼정답

클래스 내부에서 타입을 지정하는 것이 아닌 외부에서 사용자에 의해 지정되는 것을 의미

1. 제네릭을 사용하면 잘못된 타입이 들어올 수 있는 것을 컴파일 단계에서 방지할 수 있다.
2. 클래스 외부에서 타입을 지정해주기 때문에 따로 타입을 체크하고 변환해줄 필요가 없다. 즉, 관리하기가 편하다.
3. 비슷한 기능을 지원하는 경우 코드의 재사용성이 높아진다.

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); // 출력 : 이것은 오렌지 입니다.

▼정답

class Apple1 {
	public String toString() {
		return "Apple";
	}
}

class Orange1 {
	public String toString() {
		return "Orange";
	}
}

class BoxTest<T> { // <Apple> 을 받는다.
	// <T> : 타입 매개변수(Type Parameter)
	// 타입 인자(Type Argument)
	private T ob;

	public void set(T o) {
		ob = o;
	}

	public T get() {
		return ob;
	}
}

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

   Person2<String, Integer> p = new Person2<String, Integer>();
   p.set("홍길동", 25);
   System.out.println(p); //출력 : 홍길동 25 세 입니다. 

▼정답

package Generic;

class Person2<L, R> {
	private L left; // 왼쪽 수납 공간
	private R right; // 오른쪽 수납 공간

	public void set(L o, R r) {
		left = o;
		right = r;
	}

	@Override
	public String toString() {
		return left + " & " + right + "세 입니다.";
	}
}

public class GenericTest2 {
	public static void main(String[] args) {
		Person2<String, Integer> p = new Person2<String, Integer>();
		p.set("홍길동", 25);
		System.out.println(p); // 출력 : 홍길동 25 세 입니다.
	}
}

0개의 댓글