제네릭: 결정되지 않은 타입을 파라미터로 처리하고 실제 사용할 때 파라미터를 구체적인 타입으로 대체시키는 기능
만드는 방법
형식
class 클래스명<제너릭타입글자>{
제너릭타입글자 변수명; // 변수선언에 제너릭을 사용하는경우
...
제너릭타입글자 메서드명(){ //반환값이 있는 메서드에 제너릭을 사용하는 경우
...
return 값;
}
}
제너릭타입글자
- T => Type
- K => Key
- V => Value
- E => Element
제너릭 클래스 생성
class MyGeneric<T>{//타입여러개 작성가능
//T 때마다 원하는 타입 선언
private T val;
public T getVal() {
return val;
}
public void setVal(T val) {
this.val = val;
}
@Override
public String toString() {
return "MyGeneric [val=" + val + "]";
}
}
객체 생성& 값 넣기
//mg1 객체 생성
MyGeneric<String> mg1 = new MyGeneric<>();
//값 넣기
mg1.setVal("우리나라");
//mg1 객체 생성
MyGeneric<Integer> mg2 = new MyGeneric<>();
//값 넣기
mg2.setVal(200);
값 출력
//값출력해서 변수에 저장
rtnVal1 = mg1.getVal();
rtnVal2 = mg2.getVal();
System.out.println("제너릭 문자열 반환값 :" + rtnVal1);
System.out.println("제너릭 정수형 반환값 :" + rtnVal2);
Object 타입 사용법
Object 타입 : 모든 클래스의 최상의 부모 클래스
- 저장되는것을 출력 할려고 할때 강제변환 해야한다
- 저장되어있는 값의 타입을 알아야함
- 저장되어있는 값을 정확히 모르면 에러 생김
클래스 생성
class NonGenericClass{
// 타입 Object 지정
private Object val;
//getter setter 지정
public Object getVal() {//값 출력
return val;
}
public void setVal(Object val) { //값 입력
this.val = val;
}
}
객체 생성 & 값 넣음
//객체선언
NonGenericClass ng1 = new NonGenericClass();
ng1.setVal("가나다라"); //값 넣음
//객체선언
NonGenericClass ng2 = new NonGenericClass();
ng2.setVal(100);//값 넣음
Object타입을 강제변환 후 출력
//Object 타입은 강제변환 후 ng1 값 출력
String rtnVal1 = (String) ng1.getVal();
//출력문
System.out.println("정수형 반환값 rtnVal1 =>"+ rtnVal1);
//Object 타입은 강제변환 후 ng1 값 출력
Integer rtnVal2 = (Integer) ng2.getVal();
//출력문
System.out.println("정수형 반환값 rtnVal2 =>"+ rtnVal2);
원본
더보기
package kr.or.ddit.basic;
import java.util.Map;
public class T02GenericClassTest {
/*
* 제너릭 클래스 만드는 방법
* 형식)
* class 클래스명<제너릭타입글자>{
* 제너릭타입글자 변수명; // 변수선언에 제너릭을 사용하는 경우
* ...
*
* 제너릭타입글자 메서드명(){ //반환값이 있는 메서드에 제너릭을 사용하는 경우
*
* ...
*
* return 값;
* }
* }
* --제너릭타입글자--
* T => Type
* K => Key
* V =>Value
* E => Element
*
*/
public static void main(String[] args) {
//객체 생성
NonGenericClass ng1 = new NonGenericClass();
ng1.setVal("가나다라");
NonGenericClass ng2 = new NonGenericClass();
ng2.setVal(100);
String rtnVal1 = (String) ng1.getVal();
System.out.println("정수형 반환값 rtnVal1 =>"+ rtnVal1);
//객체생성
Integer rtnVal2 = (Integer) ng2.getVal();
System.out.println("정수형 반환값 rtnVal2 =>"+ rtnVal2);
System.out.println();
MyGeneric<String> mg1 = new MyGeneric<String>();
mg1.setVal("우리나라");
MyGeneric<Integer> mg2 = new MyGeneric<Integer>();
mg2.setVal(200);
rtnVal1 = mg1.getVal();
rtnVal2 = mg2.getVal();
System.out.println("제너릭 문자열 반환값 :" + rtnVal1);
System.out.println("제너릭 정수형 반환값 :" + rtnVal2);
}
}
class NonGenericClass{
private Object val;
public Object getVal() {
return val;
}
public void setVal(Object val) {
this.val = val;
}
@Override
public String toString() {
return "NonGenericClass [val=" + val + "]";
}
}
class MyGeneric<T>{//타입여러개 작성가능
//T 때마다 원하는 타입 선언
private T val;
public T getVal() {
return val;
}
public void setVal(T val) {
this.val = val;
}
@Override
public String toString() {
return "MyGeneric [val=" + val + "]";
}
}
'JAVA > 수업' 카테고리의 다른 글
T04GenericMethod (2) | 2024.01.24 |
---|---|
T03GenericMethod (1) | 2024.01.24 |
T08HashMapTest (0) | 2024.01.23 |
T06 TreeSet (1) | 2024.01.23 |
T05 HashSet (0) | 2024.01.23 |