산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> java

자바 제네릭

자바 제네릭

이 자습서에서는 Java Generics, 제네릭 클래스 및 메서드를 만드는 방법 및 예제를 통해 그 장점에 대해 알아봅니다.

Java Generics를 사용하면 다양한 유형의 데이터(객체)와 함께 사용할 수 있는 단일 클래스, 인터페이스 및 메서드를 만들 수 있습니다.

이는 코드를 재사용하는 데 도움이 됩니다.

참고 :일반 기본 유형(int)에서는 작동하지 않습니다. , float , char 등).

<시간>

자바 제네릭 클래스

모든 유형의 데이터와 함께 사용할 수 있는 클래스를 만들 수 있습니다. 이러한 클래스를 Generics 클래스라고 합니다.

다음은 Java에서 제네릭 클래스를 만드는 방법입니다.

예:제네릭 클래스 생성

class Main {
  public static void main(String[] args) {

    // initialize generic class
    // with Integer data
    GenericsClass<Integer> intObj = new GenericsClass<>(5);
    System.out.println("Generic Class returns: " + intObj.getData());

    // initialize generic class
    // with String data
    GenericsClass<String> stringObj = new GenericsClass<>("Java Programming");
    System.out.println("Generic Class returns: " + stringObj.getData());
  }
}

// create a generics class
class GenericsClass<T> {

  // variable of T type
  private T data;

  public GenericsClass(T data) {
    this.data = data;
  }

  // method that return T type variable
  public T getData() {
    return this.data;
  }
}

출력

Generic Class returns: 5
Generic Class returns: Java Programming

위의 예에서 GenericsClass라는 일반 클래스를 만들었습니다. . 이 클래스는 모든 유형의 데이터 작업에 사용할 수 있습니다.

class GenericsClass<T> {...}

여기, T 꺾쇠 괄호 <> 안에 사용됨 유형 매개변수를 나타냅니다. . Main 내부 클래스에서 GenericsClass의 두 개체를 만들었습니다.

<시간>

자바 제네릭 방법

제네릭 클래스와 유사하게 모든 유형의 데이터에 사용할 수 있는 메서드를 만들 수도 있습니다. 이러한 클래스를 Generics Method라고 합니다.

다음은 Java에서 제네릭 클래스를 만드는 방법입니다.

예:제네릭 메소드 생성

class Main {
  public static void main(String[] args) {

    // initialize the class with Integer data
    DemoClass demo = new DemoClass();

    // generics method working with String
    demo.<String>genericsMethod("Java Programming");

    // generics method working with integer
    demo.<Integer>genericsMethod(25);
  }
}

class DemoClass {

  // creae a generics method
  public <T> void genericsMethod(T data) {
    System.out.println("Generics Method:");
    System.out.println("Data Passed: " + data);
  }
}

출력

Generics Method:
Data Passed: Java Programming
Generics Method:
Data Passed: 25

위의 예에서 genericsMethod라는 제네릭 메서드를 만들었습니다. .

public <T> void genericMethod(T data) {...}

여기에서 유형 매개변수 <T> 수정자 public 뒤에 삽입됩니다. 반환 유형 void 앞에 .

실제 유형 <String>를 배치하여 제네릭 메서드를 호출할 수 있습니다. 및 <Integer> 메서드 이름 앞의 대괄호 안에.

demo.<String>genericMethod("Java Programming");

demo.<Integer>genericMethod(25);

참고 :type 매개변수를 포함하지 않고 제네릭 메서드를 호출할 수 있습니다. 예를 들어,

demo.genericsMethod("Java Programming");

이 경우 컴파일러는 메서드에 전달된 값을 기반으로 유형 매개변수를 일치시킬 수 있습니다.

<시간>

제한된 유형

일반적으로 유형 매개변수는 모든 데이터 유형을 허용할 수 있습니다(기본 유형 제외).

그러나 특정 유형(예:숫자 유형의 데이터 허용)에만 제네릭을 사용하려는 경우 경계 유형을 사용할 수 있습니다.

바인딩된 유형의 경우 extends을 사용합니다. 예어. 예를 들어,

<T extends A>

이것은 T를 의미합니다. A의 하위 유형인 데이터만 허용할 수 있습니다. .

예:제한된 유형

class GenericsClass <T extends Number> {

  public void display() {
    System.out.println("This is a bounded type generics class.");
  }
}

class Main {
  public static void main(String[] args) {

    // create an object of GenericsClass
    GenericsClass<String> obj = new GenericsClass<>();
  }
}

위의 예에서 GenericsClass라는 클래스를 만들었습니다. 표현에 주목하세요, 표현에 주목하세요

<T extends Number> 

여기, GenericsClass 경계 유형으로 생성됩니다. 이것은 GenericsClass를 의미합니다. Number의 자식인 데이터 유형에서만 작동할 수 있습니다. (Integer , Double 등).

그러나 String을 사용하여 제네릭 클래스의 개체를 만들었습니다. . 이 경우 다음과 같은 오류가 발생합니다.

GenericsClass<String> obj = new GenericsClass<>();
                                                 ^
    reason: inference variable T has incompatible bounds
      equality constraints: String
      lower bounds: Number
  where T is a type-variable:
    T extends Number declared in class GenericsClass
<시간>

자바 제네릭의 장점

1. 코드 재사용성

Java의 제네릭을 사용하여 다양한 유형의 데이터와 작동하는 코드를 작성할 수 있습니다. 예를 들어,

public <T> void genericsMethod(T data) {...}

여기에서 제네릭 메서드를 만들었습니다. 이 동일한 방법을 사용하여 정수 데이터, 문자열 데이터 등에 대한 작업을 수행할 수 있습니다.

2. 컴파일 시간 유형 검사

유형 매개변수 of 제네릭은 제네릭 코드에 사용된 데이터 유형에 대한 정보를 제공합니다. 예를 들어,

// using Generics
GenericsClass<Integer> list = new GenericsClass<>();

여기서 우리는 GenericsClass Integer로 작업 중입니다. 데이터 전용.

이제 이 클래스에 Integer 이외의 데이터를 전달하려고 하면 프로그램이 컴파일 시간에 오류를 생성합니다.

3. 컬렉션과 함께 사용

컬렉션 프레임워크는 Java에서 제네릭 개념을 사용합니다. 예를 들어,

// creating a string type ArrayList
ArrayList<String> list1 = new ArrayList<>();

// creating a integer type ArrayList
ArrayList<Integer> list2 = new ArrayList<>();

위의 예에서는 동일한 ArrayList 클래스를 사용하여 다른 유형의 데이터를 작업했습니다.

ArrayList과 유사 , 기타 컬렉션(LinkedList , Queue , Maps 등) Java에서도 일반적입니다.


java

  1. 자바 최종 키워드
  2. 자바 instanceof 연산자
  3. 자바 상속
  4. 자바 중첩 정적 클래스
  5. 자바 익명 클래스
  6. 자바 싱글톤 클래스
  7. 자바 리플렉션
  8. 자바 ArrayList 클래스
  9. 자바 ObjectOutputStream 클래스
  10. 자바 파일 클래스