무소의 뿔처럼

Generics 본문

알아두기/Java

Generics

값을변경 2022. 10. 31. 16:12

 _ 이해하는것 까지만

 

 

컴파일때 타입체크 .

 

class를 instance화 할때 타입지정

※ class 만들때

class Rpg<T,S> {

	public T name;
	public S level;
    
    character(T name, S level) {
    	this.name = name;
    	this.level = level;
    }
    
    
	//setter, getter, toString()
    
}

 

setter, getter, toString()

더보기
//setter, getter, toString()

public T getName() {
		return name;
	}

	public void setName(T name) {
		this.name = name;
	}

	public S getLevel() {
		return level;
	}

	public void setLevel(S level) {
		this.level = level;
	}
    
    
 	@Override
	public String toString() {
		return "Rpg [name=" + name + ", level=" + level + "]";
	}

 

 

 instance화 할때 타입을 정해준다.

Rpg<String, Integer> R1 = new Rpg<String, Integer>();

		==

Rpg<String, Integer> R2 = new Rpg<>();  // Java SE 7부터

 

 

참고 :  instance화

더보기
Rpg<String, Integer> R3 = new Rpg();
/* 경고 : 
Type safety: The expression of type Rpg needs unchecked conversion to conform to Rpg<String,Integer>
유형 안전성: Rpg 유형의 표현식은 Rpg<String,Integer>를 준수하기 위해 확인되지 않은 변환이 필요합니다.*/

Rpg R4 = new Rpg();
/* 경고 : 
Rpg is a raw type. References to generic type Rpg<T,S> should be parameterized
RPG는 원시 유형입니다. 제네릭 형식 Rpg<T,S>에 대한 참조는 매개변수화되어야 합니다.*/

 

 

 main에서 호출 

public class newbie {

	public static void main(String[] args) {

		Rpg<String, Integer> R1 = new Rpg<String, Integer>();

		R1.character("1", 10);
 
		System.out.println("R1: "+R1);
    }
}


결과 : R1: Rpg [name=1, level=10]

//		R1.character("1", "10");  String, String
//		R1.character(1, "10");	  int, int

 java.lang.Error: Unresolved compilation problems: 

명시한 타입과 일치하지 않으면 컴파일 에러가 난다.

 

 

 

Comments