1. StarbucksApp
package genericsJoin;
import java.util.ArrayList;
import java.util.List;
interface Starbucks { }
class FrappuccinoSyrup { }
class Frappuccino implements Starbucks {
FrappuccinoSyrup fsyrup;
public String toString() { return "Frappuccino"; }
}
class JavaChip extends Frappuccino { public String toString() { return "JavaChip"; }}
class Malcha extends Frappuccino { public String toString() { return "Malcha"; }}
class Latte { }
public class StarbucksApp {
public static void main(String[] args) {
StarbucksBasket<Frappuccino> fsb = new StarbucksBasket<>();
fsb.add(new JavaChip());
fsb.add(new Malcha());
fsb.add(new Frappuccino());
// fsb.add(new Latte()); // 에러. <T extends Frappuccino & Starbucks>를 만족하는 타입만 대입 될 수 있다.
StarbucksBasket<JavaChip> jsb = new StarbucksBasket<>();
jsb.add(new JavaChip());
// jsb.add(new Frappuccino()); // 에러. JavaChip의 조상은 올 수 없음.
// jsb.add(new Malcha()); // 에러. JavaChip과 자손관계가 아님.
System.out.println("fsb : " + fsb);
System.out.println("jsb : " + jsb);
}
}
class StarbucksBasket<T extends Frappuccino & Starbucks> extends Basket<T> { }
class Basket<T> {
List<T> list = new ArrayList<T>();
void add(T item) { list.add(item); }
T get(int i) { return list.get(i); }
int size() { return list.size(); }
public String toString() { return list.toString(); }
}
'JavaStudy(open) > 코딩' 카테고리의 다른 글
java - Exercise App miniProject (0) | 2021.08.08 |
---|---|
java를 이용한 미니 프로젝트 (0) | 2021.07.18 |
컬렉션 Set 인터페이스 이용하여 장보기 프로그램 만들기 (0) | 2021.06.27 |
Chapter 10 날짜와 시간 & 형식화 이용하여 도서관 책 빌리기 프로그램 만들기 (0) | 2021.06.27 |
게시판 만들어보기(맴버 아이디 별로 게시글 작성하기, 삭제시 userName과 password 확인 후 삭제, memberId로 게시글을 조회 했을시 없는 사용자일때 예외로 던지고 예외처리 ) (0) | 2021.06.17 |