반응형


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class MyClass {
    MyClass() { }
    
    //전달받는 인수에 따라 생성자 오버로딩 시키기..
    void func01(int num) {
        System.out.println(num);
    }
    void func02(String str) {
        System.out.println(str);
    }
    void func03(float f) {
        System.out.println(f);
    }
}
 
public class Practice01 {
    public static void main(String[] args) {
        MyClass myClass = new MyClass();
        myClass.func01(10);
        myClass.func02("Hello");
        myClass.func03(3.14f);
    }
}
 
cs
이렇게 전달받는 인수에 따라 함수를 생성할 때 출력문이 여러번 들어가게 되어 귀찮아진다.. 이를 보완하고자 제네릭을 쓰게되는데..



<제네릭을 사용한 코드>


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class MyClass <T> {
    MyClass() {
        
    }
    void func01(T n) {
        System.out.println(n);
    }
}
 
public class Practice01 {
    public static void main(String[] args) {
        MyClass<Integer> myclass1 = new MyClass<>(); //Integer는 class..
        myclass1.func01(10);
        
        MyClass<String> myclass2 = new MyClass<>();
        myclass2.func01("메롱");
        
        MyClass<MyClass> myclass3 = new MyClass<>();
        myclass3.func01(new MyClass());
    }
}
cs
class를 생성할 때 <T>의 의미는 "객체를 생성시킬 때 타입을 알려줄테니 <T>대신에 그 타입을 넣고 <T>를 알려준 타입으로 대신 사용하여라.."라는 의미를 가지고 있다.(대명사역할) 이곳에 넣을수 있는 타입으로는 클래스타입(Integer, Float, String...)으로 일반타입(int, short, char...)은 넣을 수 없다.

객체를 생성해줄때 <>사이에 원하는 클래스타입을 넣어준다.


1
2
MyClass<Integer> myclass1 = new MyClass<>(); //Integer는 class..
myclass1.func01(10);
cs

myclass1타입은 Integer타입으로 main함수에서 func01함수를 부를때 인수를 Integer타입으로 넘겨준다. MyClass에서는 <T>타입으로 되어있지만 Integer타입으로 사용가능하다. Integet타입으로 넘겼는데 String으로 사용할 경우 당연한 에러가 나온다!



마찬가지로..

1
2
Apple<String> a2 = new Apple<>();
a2.func01("메롱");
cs


1
2
 MyClass<MyClass> myclass3 = new MyClass<>();
 myclass3.func01(new MyClass());
cs
String 클래스타입, 내가 직접 생성한 MyClass타입을 사용할 수 있다.










잘못된 정보에 대한 피드백은 언제나 환영입니다!!


반응형

'Programming Language > JAVA' 카테고리의 다른 글

[급여관리 프로그램(Has~A 만)  (24) 2018.07.16
[Java]Enum  (0) 2018.07.12
클래스 구성요소  (0) 2018.07.10
성적처리 프로그램(클래스 사용x)  (0) 2018.07.09
이클립스 단축키 모음  (0) 2018.07.05

+ Recent posts