Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- AOP
- 김영한
- db
- QueryDSL
- 스프링 핵심 기능
- Greedy
- springdatajpa
- JPQL
- Android
- Servlet
- transaction
- SpringBoot
- 스프링
- pointcut
- 알고리즘
- JDBC
- 백준
- java
- Thymeleaf
- jpa
- Exception
- Proxy
- kotlin
- 스프링 핵심 원리
- http
- spring
- 자바
- Spring Boot
- 그리디
- 인프런
Archives
- Today
- Total
개발자되기 프로젝트
Generic Programming 본문
1. Generic 자료형 정의
- 클래스에서 사용하는 변수의 자료형이 여러 개 일수 있음.
- 해당 기능의 자료형을 특정하지 않고 해당 클래스를 사용할 때 지정하도록 선언.
- 실제 사용되는 자료형의 변환은 컴파일러에 의해 검증되므오 안정적인 방식
- 자료형 매개변수 T(type Paramter)
- 이 클래스를 사용하는 시점에, 사용할 자료형을 지정, static 변수 사용 불가.
- E : element, K : key, V : value
2. <> 다이아몬드 연산자
- <> : 다이아몬드 연산자
- ArrayList list = new ArrayList<>() 다이아몬드 연산자에 자료형 생략 가능.
- JAVA 10이후로 Generic에서 자료형 추론함.
3. Generic 사용
- 여러 종류의 material을 받는 printer가 있다고 하자.
public class GenericPrinter<T> {
private T material;
public GenericPrinter() {
}
public GenericPrinter(T material) {
this.material = material;
}
public T getMaterial() {
return material;
}
public void setMaterial(T material) {
this.material = material;
}
@Override
public String toString() {
return "ThreeDPrinter{" +
"material=" + material +
'}';
}
}
- 아래 코드와 같이 사용이 가능.
class ThreeDPrinterTest {
GenericPrinter<Powder> genericPrinterPowder;
GenericPrinter<Plastic> genericPrinterPlastic;
@BeforeEach
void beforeTest(){
Powder powder = new Powder();
genericPrinterPowder = new GenericPrinter<>(powder);
Plastic plastic = new Plastic();
genericPrinterPlastic = new GenericPrinter<>(plastic);
}
@Test
void getMaterial() {
Plastic plastic = genericPrinterPlastic.getMaterial();
Powder powder = genericPrinterPowder.getMaterial();
assertEquals(plastic.getClass(), Plastic.class);
assertEquals(powder.getClass(), Powder.class);
}
}
4. GitHub : 211024 Generic Type
'Java > 자료구조' 카테고리의 다른 글
Generic Method (0) | 2021.10.24 |
---|---|
<T extends Class> 사용 (0) | 2021.10.24 |
Queue 구현 (0) | 2021.10.24 |
Stack 구현 (0) | 2021.10.24 |
LinkedList 구현 (0) | 2021.10.24 |
Comments