자바 입문 기초 알고리즘 구조

자바 제너릭(4/5) 생활코딩

ClapJeans 2021. 7. 22. 03:48

제너릭은 생략이가능하다 

 

EmployeeInfo e = new EmployeeInfo(1);

Integer i = new Integer(10);

Person<EmployeeInfo, Integer> p1 = new Person<EmployeeInfo, Integer>(e, i);

 

 

생성자의 매개변수 e와 i는 각각 EmployeeInfo ,Integer라는 것을 알수있다 

 

Person<EmployeeInfo, Integer> p1 = new Person<EmployeeInfo, Integer>(e, i);

>> 그래서 이와같이 생략이 가능하다 Person p1 = new Person(e, i);

 

package org.opentutorials.javatutorials.generic;

class EmployeeInfo{

public int rank;

EmployeeInfo(int rank){ this.rank = rank; }

}

class Person<T, S>{ //클래스안에서 쓰는 제너릭 

public T info;

public S id;

Person(T info, S id){

this.info = info;

this.id = id;

}

public <U> void printInfo(U info){ //제너릭은 꼭 클래스안에서만쓰는것이 아니라 메소드안에서도 사용이 가능하다 

System.out.println(info);

}

}

public class GenericDemo {

public static void main(String[] args) {

EmployeeInfo e = new EmployeeInfo(1);

Integer i = new Integer(10);

Person<EmployeeInfo, Integer> p1 = new Person<EmployeeInfo, Integer>(e, i);

p1.<EmployeeInfo>printInfo(e);

p1.printInfo(e); //물론 생략이 가능하다는 얘기이다. 

}

}

메소드 안에 제너릭 사용법

접근제어자 < > 리턴값 사이에 꺽쇠로 넣어줌  

printInfo 라는 메소드 printInFo 라는 데이터 타입을 아직 확정하지않음 

 

person 이라는 클래스안에 메소드이기때문에

p1.<EmployeeInfo>printInfo(e);