728x90
Generic이란
- Java에서 많이 쓰는 매커니즘 중에 하나
- 인스턴화시에 다룰 데이터 타입을 확정하는 것
- 다양한 타입의 객체들을 다루는 메서드나 클래스에 컴파일시에 타입을 체크 해주는 기능
- 다룰 객체의 타입을 미리 명시하여 객체의 형 변환이 불필요하다.
Generic의 장점
- 타입의 안정성
- 형 변환 작업이 불필요
- 코드의 간결 <- 형변환이 필요 없으니가 형변환 코드가 없다
예
List<참조타입> test = new ArrayList<참조타입>();
만약 리스트에서 제네릭을 안쓰면 오브젝트로 데이터 타입이 설정 되어서 데이터를 가져다 쓸때마다 형변환을 해줘야한다.
참조 타입에 와일드 카드 ?를 쓸 수 있고 와일드 카드는 아무 참조타입이나 대입이 가능하다. 대신 형변환이 필수
Generic의 다형성
다형성 : 슈퍼클래스가 참조타입으로 올 수 있는 형태
- 제네릭도 다형성이 사용 가능하다.
- 클래스, 인터페이스도 활용 가능
List<? extends 슈퍼클래스> test = new ArrayList<서브클래스>();
슈퍼클래스 참조 타입으로 슈퍼클래스를 상속 받는 서브클래스 전체 대입 가능
https://r-0o0-j.tistory.com/90
JAVA 다형성
1. 다형성 - 하나의 클래스를 상속받아 여러개의 클래스가 확장 되었을 경우 상속의 주체가 되는 슈퍼클래스의 참조 타입으로 업캐스팅이 가능하며 캐스팅 된 객체로 비지니스 로직 처리가 가능
r-0o0-j.tistory.com
Generic 선언
package kr.or.ksmart;
interface MGenericInterface<T>{
public void setData(T data);
public T getData();
}
class MGeneric<T> implements MGenericInterface<T>{
private T data;
@Override
public void setData(T data) {
this.data =data;
}
@Override
public T getData() {
return data;
}
}
public class Generic03 {
public static void main(String[] args) {
MGenericInterface<String> m = new MGeneric<String>();
m.setData("hong-hong");
System.out.println(m.getData());
}
}
반응형
'Backend > JAVA' 카테고리의 다른 글
ajax 공통 모듈 (0) | 2020.07.03 |
---|---|
객체지향 설계 5대 원칙 - SOILD 원칙 (1) | 2020.07.01 |
JAVA 예외 던지기 Throw (0) | 2020.05.20 |
JAVA 예외처리하기 RuntimeException (0) | 2020.05.20 |
MVC Servlet - controller 작성하기 - Filter (0) | 2020.05.14 |
댓글