ID_DI
DI's study notes
ID_DI
전체 방문자
오늘
어제
  • 분류 전체보기 (85)
    • Deep-Learning (3)
      • CNN (2)
      • NLP (1)
    • Data_Python (6)
      • Numpy (0)
      • Matplotlib (4)
    • Python (8)
      • Python Algorithm (6)
    • Java (36)
      • Java(base) (33)
      • Java practice(base) (2)
    • Git (12)
    • Algorithm (7)
    • etc (7)
    • linux (1)
    • DeskSetup (0)
    • TIL_모각코 (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • git add.
  • matplotlib
  • java base
  • java
  • binarySearch
  • 자바
  • Python
  • README.md
  • java 기초
  • java.net
  • Github
  • 알고리즘
  • 합병정렬
  • string to int
  • 파이썬
  • java.lang
  • 커밋
  • staged
  • git
  • 정렬

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ID_DI

DI's study notes

[Java] Generic 제네릭<> 클래스, 메소드, 인터페이스
Java/Java(base)

[Java] Generic 제네릭<> 클래스, 메소드, 인터페이스

2021. 12. 5. 18:00

Generic(제네릭)

  • 자료형을 선언할 때 자료형을 정하지 않는 기법(사용할 때 지정)

<키워드>

대문자로시작

  • E : Element
  • N : Number
  • T : Type
  • K : Key
  • V : value
  1. Generic class(제네릭 클래스)
    • 클래스 내부에서 사용될 자료형을 지정한다.
      GClassTest<String> obj = new GClassTest<>();
      obj.data1 = "Hello";
      
      GClassTest<Integer> obj2 = new GClassTest<>();
      obj2.data1 = 10; //Integer 타입의 객체 data1 에 int 타입의 10 을 대입하면 Auto-BOXING
      • 단, 객체형 자료형이어야 한다.
      • int char double등과 같은 기본자료형은 사용 불가능
        • Wrapper class 타입을 사용하여 int --> Integer 로 사용가능
          • Autoboxing 으로 Integer을 사용하여 int 값 바로 대입
    • class 클래스명<키워드>{ 내부에서 키워드를 타입으로 사용 가능 }
  2. Generic method(제네릭 메소드)
    • 메소드 내부에서 사용될 자료형을 지정한다.
    <키워드>리턴타입 메소드명(){
        내부에서 키워드를 타입으로 사용 가능
    }
    <Type>void f(Type data) {
            System.out.println(data);
        }
    • 메소드는 호출할 때, <타입>를 표기하지 않아도 자동으로 타입을 정해준다.
    GMethodTest obj3 = new GMethodTest();
    
    obj3.<String>f2("Hello");
    obj3.f2("Hello");
    위를 실행한 결과는 같다. <>타입 생략가능
  3. Generic interface(제네릭 인터페이스)
  • 인터페이스 내부에서 사용될 자료형을 지정한다.
interface 인터페이스명<키워드>{
    내부에서 키워드를 타입으로 사용 가능
}

Ex)

public interface GInterTest<N1, N2> {
    N1 add(N1 num1, N1 num2);
    N2 div(N1 num1, N2 num2);
    N2 sub(N2 num1, N2 num2);
}
GInterTest<Integer, Double> obj4 = new GInterTest<Integer, Double>() {

            @Override
            public Double sub(Double num1, Double num2) {
                return num1 - num2;
            }

            @Override
            public Double div(Integer num1, Double num2) {
                return num1/num2;
            }

            @Override
            public Integer add(Integer num1, Integer num2) {
                return num1 + num2;
            }
        };

'Java > Java(base)' 카테고리의 다른 글

[Java] 스레드 Thread 멀티스레드 Multi-Thread run(), start()  (0) 2021.12.17
[Java]Object class toString(), equals(), hashcode()  (0) 2021.12.02
[Java] @Annotation, 어노테이션  (0) 2021.12.01
[Java] Java API(Application Programming Interface)  (0) 2021.12.01
[Java] 예외처리 try-catch-finally / throw throws 차이점 및 예제  (0) 2021.12.01
    'Java/Java(base)' 카테고리의 다른 글
    • [Java] 스레드 Thread 멀티스레드 Multi-Thread run(), start()
    • [Java]Object class toString(), equals(), hashcode()
    • [Java] @Annotation, 어노테이션
    • [Java] Java API(Application Programming Interface)
    ID_DI
    ID_DI
    Computer Vision

    티스토리툴바