5월 9일 내용정리
1.아래 코드는 지네릭스를 사용전
모든 객체를 받고 싶을때 메인실행클래스에서 객체를 생성하는 방법
아래 소스코드 참조
Cup c= new Cup(); Cup 클래스는 구체적인 타입이 없으므로 Raw타입의 제네릭 클래스이다.
c.setBeverage(new boricha());Raw타입의 Cup객체이므로 어떤 타입의 객체든 추가할수 있다.
Beer b1 =(Beer)c.getBeverage(); 오브젝트 타입은 최고 조상이기 자식객체를 사용하고자 할때는 Beer자식 객체로 강제 형변환을 함.
package study_0509;
public class Cup<T> {
private T beverage; //필드타입으로 T를 받음
public T getBeverage() { //메서드를 T를 받음
return beverage;
}
public void setBeverage(T beverage) {
this.beverage = beverage;
}
}
======================================================
public class CupTest {
// Cup c= new Cup(); Cup은 오브젝트 타입으로 오브젝트타입으로 받을수 있다.
// c.setBeverage(new 모든객체());
// Beer b1 =(강제형변환)c.getBeverage(); 오브젝트 타입으로 들어 오
public static void main(String[] args) {
Cup<Beer> c= new Cup<Beer>(); //Beer 객체만 담아달라고 선언
c.setBeverage(new Beer()); //Beer만 새로 객체선언할수 있음
Beer b1 =c.getBeverage(); //Beer만 받을수 있음 지네릭스로 Beer만받을수 있게 선언헸기 때문
Cup<Boricha>c1= new Cup <Boricha>();
c1.setBeverage(new Boricha());
}
}
2.멀티타입은 설계도에서 BOX<T,B,V> 실행메서드에서BOX<String,Integer,Double>=new BOX<>(); 선언
package study_0509;
public class Product <T,M>{ //멀티타입파라미터: 2개이상의 파라미터를 설정
//설계도:사용자에 따라 2가지 타입을 설정 할 수있는 설계도
private T kind;
private M model;
public T getKind() {
return kind;
}
public void setKind(T kind) {
this.kind = kind;
}
public M getModel() {
return model;
}
public void setModel(M model) {
this.model = model;
}
}
==================================================================
package study_0509;
public class ProductTest {
public static void main(String[] args) {
Product<String,String>pro1 = new Product<String,String>();
pro1.setKind("TV");
String Kind01=pro1.getKind();
pro1.setModel("올레드TV");
String Model01=pro1.getModel();
System.out.println(Kind01);
System.out.println(Model01);
}
}
public class BOX{
private Object obj; //그어떤 타입으로 다 받고싶을때 Object으로 처리, Object 모든객체의 조상
public void set(Object obj) { //set 메서드의 매개변수를 모든객체의 조상으로받음
this.obj = obj;
}
}
public Object get() { //get 메서드의 매개변수를 모든객체의 조상으로받음
return obj;
}
메인실행 클래스에서 선언
BOX b =new BOX(); //객체생성
b.set(new BOX()); //객체주소로 set메서드호출하여 내용채워줌
String name =(String)b.get(); 강제형변환, 오브젝은 모든객체의조상
package study_0509;
public class BOX<T> { //멀티타입은 설계도에서 BOX<T,B,V> 실행메서드에서 BOX<String,Integer,Double>=new BOX<>(); 선언
//private Object obj; 그어떤 타입으로 다 받고싶을때 Object으로 처리, Object 모든객체의 조상
private T obj;
// public void set(Object obj) { BOX b =new BOX();
// this.obj = obj; b.set(new BOX()); 객체주소로 set해달라
// }
public void set(T obj) {
this.obj = obj;
}
// public Object get() { String name =(String)b.get(); 강제형변환, 오브젝은 모든객체의조상
// return obj;
// }
public T get() {
return obj;
}
}