728x90
반응형
제네릭이란?
- 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법을 의미한다.
그렇다면 왜 제네릭을 사용하는 것일까?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | class EnglishBook{ public int price; EnglishBook(int price){ this.price = price; } } class EnglishTest{ public EnglishBook info; EnglishTest(EnglishBook info){ this.info = info; } } class MathBook{ public int price; MathBook(int price){ this.price = price; } } class MathTest{ public MathBook info; public MathTest(MathBook info) { this.info = info; } } public class Test { public static void main(String[] args) { EnglishBook book = new EnglishBook(5000); EnglishTest test = new EnglishTest(book); System.out.println(test.info.price); System.out.println(); MathBook book2 = new MathBook(3000); MathTest test2 = new MathTest(book2); System.out.println(test2.info.price); } } | cs |
위 코드를 줄여 하나의 클래스로 만들어보았다.
하지만, 이렇게 하면 BookTest의 Object 타입 때문에 t1에 들어가는 타입은 Object이다.
그러나, EnglishBook과 MathBook에는 Integer 타입으로 가격을 넣어주어야한다. 어떻게 할 수 있을까?
이런식으로 클래스를 줄이고, 제네릭을 사용하여 T 자리에 클래스를 넣어 코드를 줄여볼 수 있었다.
제네릭 메소드
접근제한자와 리턴값 사이에 꺾새를 주고, 매개변수의 타입을 U로 설정하면 제네릭 메소드가 완성된다.
728x90
반응형
'✨ Java > etc' 카테고리의 다른 글
자바(JAVA) - static(클래스)변수와 instance변수, local(지역)변수 (0) | 2023.07.06 |
---|---|
자바(JAVA) - 자료형 변환 (byte, int, long, char, boolean) 연산 (0) | 2023.07.06 |
자바(JAVA) - 자바의 특징 (0) | 2023.07.06 |
자바(JAVA) - 상수(final)의 의미 (0) | 2023.07.05 |
자바(JAVA) - Static의 의미 (0) | 2023.07.05 |
댓글