본문 바로가기
Backend/JAVA

JAVA - Generic

by YERIEL_염주둥 2020. 5. 22.
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

댓글