CODE/JAVA2

Generic

maskan 2021. 1. 27. 14:51
class NonGenericClass {
	private Object value;
	public int kor;

	public void setKor(int kor) {

		if (kor < 0 || kor > 100) {
			this.kor = 0;
		} else {
			this.kor = kor;
		}
	}

	public Object getValue() {
		return value;
	}

	public void setValue(Object value) {
		this.value = value;
	}

	// --제네릭 타입 글자로 많이 사용되는 것 --
	// 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;
	}
}

public class GenericTest {

	public static void main(String[] args) {

		NonGenericClass ng1 = new NonGenericClass();
		ng1.setValue("가나다라");

		NonGenericClass ng2 = new NonGenericClass();
		ng2.setValue(100);
		// String rtnNg1 = ng1.getValue(); //Object로 처리했기 때문에 컴파일 에러
		String rtnNg1 = (String) ng1.getValue();
		int rtnNg2 = (int) ng2.getValue();
		System.out.println("문자열 반환값 : " + rtnNg1);
		System.out.println("숫자열 반환값 : " + rtnNg2);

		// String rtnNg3 = (String)ng2.getValue();
		// java.lang.Integer cannot be cast to java.lang.String

		// System.out.println("숫자열 반환값 : " + rtnNg3);
		String rtnNg4 = ng2.getValue().toString();
		System.out.println("숫자열 반환값 : " + rtnNg4);

		MyGeneric<String> mg1 = new MyGeneric<>();
		MyGeneric<Integer> mg2 = new MyGeneric<>();

		mg1.setValue("우리나라");
		mg2.setValue(500);

		String rtnMg1 = mg1.getValue();
		int rtnMg2 = mg2.getValue();

		// mg1.setValue(200);
		// mg2.setValue("가나다라");

		System.out.println("문자열 반환값 : " + rtnMg1);
		System.out.println("숫자 반환값 : " + rtnMg2);

	}

}

'CODE > JAVA2' 카테고리의 다른 글

Properties  (0) 2021.01.27
Enum  (0) 2021.01.27
Args  (0) 2021.01.27