일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 객체지향
- pyqt
- 배열
- Homebrew
- FastAPI
- 자바문제
- Java
- html
- 컬렉션프레임워크
- 이클립스
- API
- JDBC
- Oracle
- spring
- python
- Mac
- ddit
- servlet
- Error
- crud
- 맥
- 생활코딩
- jsp
- 단축키
- 대덕인재개발원
- Android
- 반복문
- ibatis
- nodejs
- 자바
Archives
- Today
- Total
romworld
Generic 본문
package kr.or.ddit.basic.generic;
/*
- 제네릭 클래스를 만드는 방법
형식)
class 클래스명<제네릭타입글자>{
제네릭타입글자 변수명; // 변수 선언에 제네릭을 사용할 경우
제네릭타입글자 메서드명(매개변수들...){ //메서드의 반환값 자리에 사용할 경우
.....
return 반환값;
}
반환값타입 메서드명(제네릭타입글자 변수명, ...){ // 메서드의 매개변수에 사용할 경우
}
}
-- 많이 사용되는 제네릭타입글자 --
T ==> Type
K ==> Key
V ==> Value
E ==> Element
*/
class MyGeneric<T>{
private T value; // 변수 선언에 사용
public T getValue() { // 메서드의 반환값 자료형에 사용
return value;
}
public void setValue(T value) { //메서드의 매개변수에 사용
this.value = value;
}
}
class NonGeneric{ // 형변환이 자동으로 될때 자식 객체를 부모한테 넣으면됌
private Object value;
public Object getValue() {
return value;
}
public void setValue(Object value) {
this.value = value;
}
}
public class GenericTest {
public static void main(String[] args) {
NonGeneric ng1 = new NonGeneric();
ng1.setValue("가나다라");
NonGeneric ng2 = new NonGeneric();
ng2.setValue(100);
//Object strTemp = ng1.getValue(); // getValue()가 오브젝트이므로 안됨
String strTemp = (String)ng1.getValue();
System.out.println("문자열 반환값 : "+ strTemp);
//Integer intTemp = (Integer) ng2.getValue(); // 일반데이터가 객체형으로 바뀜(박싱)-근데 자동으로 바꿔줌 - 그게 오토박싱
int intTemp = (int)ng2.getValue(); // -- object 자식이므로 자동 형변환됨
System.out.println("정수형 반환값 : " + intTemp);
System.out.println("---------------------------------");
MyGeneric<String>mg1 = new MyGeneric();
mg1.setValue("안녕하세요");
//mg1.setValue(100); // 제네릭과 다른 자료형의 데이터를 저장할 수 없다.
MyGeneric<Integer> mg2 = new MyGeneric();
mg2.setValue(200);
//mg2.setValue("문자열"); // Error
String strMg = mg1.getValue(); // 데이터를 꺼내올 때 형변환 없이 꺼내올 수 있다.
int intMg = mg2.getValue();
System.out.println("제네릭 문자열 반환값 : "+ strMg);
System.out.println("제네릭 정수형 반환값 : "+ intMg);
System.out.println("----------------------------------");
// 컴파일에러는 빨간줄 나는 거 --> 에러표시를 해줌
// 런타임에러 실행단계에서 나는 에러
int test = (int)ng1.getValue(); // ng1은 스트링으로 저장되어 있어서 보기엔 오류가 없어보여도 실행시키면 런타임오류
System.out.println("test = " + test );
// int test2 = mg1.getValue(); 제네릭은 오류를 바로 컴파일에러로 보여줌
}
}
'JAVA > 개념정리' 카테고리의 다른 글
Thread 경마 프로그램 (0) | 2022.11.27 |
---|---|
Thread (0) | 2022.10.31 |
enum (1) | 2022.10.31 |
Args (0) | 2022.10.28 |
Properties (0) | 2022.10.28 |
Comments