ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 제네릭 메소드
    JAVA/Generic 2020. 10. 18. 18:30

    1. 제네릭 메솓의 정의와 호출

    자바는 클래스 전부가 아닌 특정 메소드에 대해서만 제네릭 선언하는 것을 허용한다.

    프로그램 실행결과

    제네릭 메소드의 호출 과정에서 전달되는 인자를 통해서 제네릭 자료형을 결정할 수 있으므로

    자료형의 표현은 생략 가능하다.

     

    소스 코드

    더보기
    class AAA
    {
    	@Override
    	//	toString함수는 Object 클래스의 메소드
    	public String toString() {return "Class A";	}
    }
    
    class BBB
    {
    	@Override
    	//	toString함수는 Object 클래스의 메소드
    	public String toString() {return "Class B";	}
    }
    
    class InstanceTypeShower
    {
    	int showCnt = 0;
    	
    	//	제네릭 메소드
    	public<T> void ShowInstType(T inst)
    	{
    		System.out.println("Inst : " +inst);
    		this.showCnt++;
    	}
    	void ShowPrintCnt()
    	{
    		System.out.println("Show count : " +this.showCnt);
    	}
    }
    
    public class Exam1 {
    	public static void main(String[] args) {
    		AAA aaa = new AAA();
    		BBB bbb = new BBB();
    		
    		InstanceTypeShower shower = new InstanceTypeShower();
    		shower.<AAA>ShowInstType(aaa);
    		shower.ShowInstType(bbb);	//	자료형의 표현은 생략 가능
    		
    		shower.ShowPrintCnt();
    	}
    }
    

     

     

    2. 제네릭 메소드와 둘 이상의 자료형 예제

    프로그램 실행결과

     

    소스 코드

    더보기
    class AAA
    {
    	@Override
    	//	toString함수는 Object 클래스의 메소드
    	public String toString() {return "Class A";	}
    }
    
    class BBB
    {
    	@Override
    	//	toString함수는 Object 클래스의 메소드
    	public String toString() {return "Class B";	}
    }
    
    class InstanceTypeShower2
    {
    	int showCnt = 0;
    	
    	//	제네릭 메소드
    	public<T, U> void ShowInstType(T inst1, U inst2)
    	{
    		System.out.println("Inst1 : " +inst1);
    		System.out.println("Inst2 : " +inst2);
    		this.showCnt++;
    	}
    	void ShowPrintCnt()
    	{
    		System.out.println("Show count : " +this.showCnt);
    	}
    }
    
    public class Exam2 {
    	public static void main(String[] args) {
    		AAA aaa = new AAA();
    		BBB bbb = new BBB();
    		
    		InstanceTypeShower2 shower = new InstanceTypeShower2();
    		shower.<AAA,BBB>ShowInstType(aaa, bbb);
    		shower.ShowInstType(aaa, bbb);
    	}
    }

     

    'JAVA > Generic' 카테고리의 다른 글

    제네릭 변수의 참조와 상속의 관계  (0) 2020.10.18
    제네릭 메소드와 배열  (0) 2020.10.18
    매개변수의 자료형 제한  (0) 2020.10.18
    제네릭 클래스의 이해와 설계  (0) 2020.10.18

    댓글

Designed by Tistory.