7.8>다음은 String만 다루는 MyClass 코드이다. MyClass를 제네릭 클래스 MyClass<E>로 일반화하고, 이를 이용하는 main() 메소드를 만들어 프로그램을 완성하라.
public class MyClass { private String s; public MyClass(String s) { this.s = s; } void setS(String s) { this.s = s; } String getS() { return s; } } |
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 | package SecondHW; class MyClass<E> { //제네릭 클래스 MyClass 타입 매개 변수는 E, 설정하는 것에 따라 자유자재로 바뀜 private E e; //private 형이라서 Myclass내 접근이 아니면 변경 불가한 E형 변수 e public MyClass(E e) { //생성자 ,매개변수를 객체 e 에 대입 this.e = e; } void setS(E e) { //e를 정해주는 setS메소드 매개변수 e를 객체의 e에 대입 디폴트형 this.e = e; } E getS() { //객체의 e를 반환해주는 getS메소드 디폴트형 return e; } //제네릭은 클래스와 인터페이스에만 적용되므로 자바 기본 타입은 사용 불가능 } public class GenericPractice { public static void main(String[] args) { MyClass<Integer> i = new MyClass<Integer>(1); //정수형 MyClass i 래퍼 클래스 사용 MyClass<Double> d = new MyClass<Double>(2.7); //실수형 MyClass d 래퍼 클래스 사용 MyClass<String> s = new MyClass<String>("For the Horde"); //문자열형 Myclass s System.out.println(i.getS()); //getS함수를 통해 리턴된 값 출력 System.out.println(d.getS()); System.out.println(s.getS()); i.setS(3); //i의 e를 3으로 set d.setS(3.14); //d의 e를 3.14으로 set s.setS("탕수육소스다");//s의 e를 "탕수육소스다"로 set System.out.println(i.getS()); System.out.println(d.getS()); System.out.println(s.getS()); //출력 }} | cs |