자바기초(지네릭스)

bitna's study note·2022년 5월 9일
0

자바

목록 보기
73/119

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;
	}

}
profile
좋은개발자가 되기위한 삽질기록 노트

0개의 댓글

Powered by GraphCDN, the GraphQL CDN