문제1 - 제네릭 기본
문제 설명
- 다음 코드와 실행 결과를 참고해서
Container 클래스를 만들어라
Container 클래스는 제네릭을 사용해야 함
package generic.test.ex1;
public class ContainerTest {
public static void main(String[] args) {
Container<String> stringContainer = new Container<>();
System.out.println("빈값 확인1: " + stringContainer.isEmpty());
stringContainer.setItem("data1");
System.out.println("저장 데이터: " + stringContainer.getItem());
System.out.println("빈값 확인2: " + stringContainer.isEmpty());
Container<Integer> integerContainer = new Container<>();
integerContainer.setItem(10);
System.out.println("저장 데이터: " + integerContainer.getItem());
}
}
실행 결과
값 확인1: true
저장 데이터: data1
빈값 확인2: false
저장 데이터: 10
정답 - Container 클래스
package generic.test.ex1;
public class Container<T> {
private T item;
public void setItem(T item) {
this.item = item;
}
public T getItem() {
return item;
}
public boolean isEmpty() {
return item == null;
}
}
문제2 - 제네릭 기본
문제 설명
- 다음 코드와 실행 결과를 참고해서
Pair 클래스를 만들어라
Pair 클래스는 제네릭을 사용해야 한다
package generic.test.ex2;
public class PairTest {
public static void main(String[] args) {
Pair<Integer, String> pair1 = new Pair<>();
pair1.setFirst(1);
pair1.setSecond("data");
System.out.println(pair1.getFirst());
System.out.println(pair1.getSecond());
System.out.println("pair1 = " + pair1);
Pair<String, String> pair2 = new Pair<>();
pair2.setFirst("key");
pair2.setSecond("value");
System.out.println(pair2.getFirst());
System.out.println(pair2.getSecond());
System.out.println("pair2 = " + pair2);
}
}
실행 결과
1
data
pair1 = Pair{first=1, second=data}
key
value
pair2 = Pair{first=key, second=value}
정답 - Pair 클래스
package generic.test.ex2;
public class Pair<T1, T2> {
private T1 first;
private T2 second;
public void setFirst(T1 first) {
this.first = first;
}
public void setSecond(T2 second) {
this.second = second;
}
public T1 getFirst() {
return first;
}
public T2 getSecond() {
return second;
}
@Override
public String toString() {
return "Pair{" + "first=" + first + ", second=" + second + "}";
}
}
강의 출처 : 김영한의 실전 자바 - 중급 2편