package generic.ex2;
public class Box<T> {
private T value;
public T getValue() {
return value;
}
public void setValue(T value) {
this.value = value;
}
}
제네릭클래스를 만든 후
메인코드
package generic.ex2;
import generic.animal.Animal;
import generic.animal.Cat;
import generic.animal.Dog;
public class BoxMain {
public static void main(String[] args) {
Animal animal = new Animal("동물", 0);
Dog dog = new Dog("멍멍이", 15);
Cat cat = new Cat("냐옹이", 10);
Box<Cat> box = new Box<Cat>();
box.setValue(cat);
Cat catt = box.getValue();
System.out.println(catt);
catt.sound();
Box<Dog> box2 = new Box<Dog>();
box2.setValue(dog);
Dog dogg = box2.getValue();
System.out.println(dogg);
dogg.sound();
}
}
Animal [name=냐옹이, size=10]
냐옹냐옹
Animal [name=멍멍이, size=15]
멍멍
문제와풀이1
문제1 - 제네릭기본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
정답:
public class ContainerMain {
public static void main(String[] args) {
Container<String> stringContainer = new Container<>();
System.out.println("빈값 확인1: " + stringContainer.isEmpty());
stringContainer.setItem("ii");
System.out.println("저장 데이터: " + stringContainer.getItem());
System.out.println("빈값 확인2: " + stringContainer.isEmpty());
Container<Integer> integerContainer = new Container<>();
integerContainer.setItem(10);
System.out.println("저장 데이터: " + integerContainer.getItem());
}
}
문제2 - 제네릭기본2
**문제설명**
다음코드와실행결과를참고해서`Pair`클래스를만들어라.
`Pair`클래스는제네릭을사용해야한다.
public class PairMain {
public static void main(String[] args) {
Pair<Integer, String> pair1 = new Pair<>(20250106,"Date");
System.out.println(pair1.getFirst());
System.out.println(pair1.getSecond());
System.out.println("pair1 = " + pair1);
Pair<String, String> pair2 = new Pair<>("안녕하세요", "동곤자바입니다");
System.out.println(pair2.getFirst());
System.out.println(pair2.getSecond());
System.out.println("pair2 = " + pair2);
}
}
Set 을 넣지않고 생성자로 받아버려서
제네릭타입을 입력에맞게 설정하게 했어요!!!
public class Pair<T1,T2> {
private T1 first;
private T2 second;
public Pair(T1 first , T2 second) {
this.first = first;
this.second = second;
}
public T1 getFirst() {
return first;
}
public T2 getSecond() {
return second;
}
@Override
public String toString() {
return "Pair [first=" + first + ", second=" + second + "]";
}
}