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

자바 - 제네릭

Integer 배열, String 배열 또는 정렬을 지원하는 모든 유형의 배열에서 요소를 정렬할 수 있는 단일 정렬 방법을 작성할 수 있다면 좋을 것입니다.

자바 일반 메소드와 제네릭 클래스를 사용하면 프로그래머가 단일 메소드 선언으로 관련 메소드 세트를 지정하거나 단일 클래스 선언으로 관련 유형 세트를 각각 지정할 수 있습니다.

제네릭은 또한 프로그래머가 컴파일 시간에 잘못된 형식을 잡을 수 있도록 컴파일 시간 형식 안전성을 제공합니다.

Java Generic 개념을 사용하여 객체 배열을 정렬하는 일반 메서드를 작성한 다음 Integer 배열, Double 배열, String 배열 등을 사용하여 일반 메서드를 호출하여 배열 요소를 정렬할 수 있습니다.

일반 방법

다른 형식의 인수로 호출할 수 있는 단일 제네릭 메서드 선언을 작성할 수 있습니다. 제네릭 메서드에 전달된 인수의 유형에 따라 컴파일러는 각 메서드 호출을 적절하게 처리합니다. 다음은 일반 메서드를 정의하는 규칙입니다 -

예시

다음 예는 단일 Generic 메서드를 사용하여 다른 유형의 배열을 인쇄하는 방법을 보여줍니다.

라이브 데모
public class GenericMethodTest {
   // generic method printArray
   public static < E > void printArray( E[] inputArray ) {
      // Display array elements
      for(E element : inputArray) {
         System.out.printf("%s ", element);
      }
      System.out.println();
   }

   public static void main(String args[]) {
      // Create arrays of Integer, Double and Character
      Integer[] intArray = { 1, 2, 3, 4, 5 };
      Double[] doubleArray = { 1.1, 2.2, 3.3, 4.4 };
      Character[] charArray = { 'H', 'E', 'L', 'L', 'O' };

      System.out.println("Array integerArray contains:");
      printArray(intArray);   // pass an Integer array

      System.out.println("\nArray doubleArray contains:");
      printArray(doubleArray);   // pass a Double array

      System.out.println("\nArray characterArray contains:");
      printArray(charArray);   // pass a Character array
   }
}

이것은 다음과 같은 결과를 생성합니다 -

출력

Array integerArray contains:
1 2 3 4 5 

Array doubleArray contains:
1.1 2.2 3.3 4.4 

Array characterArray contains:
H E L L O

제한된 유형 매개변수

유형 매개변수에 전달할 수 있는 유형의 종류를 제한하려는 경우가 있습니다. 예를 들어 숫자에 대해 작동하는 메서드는 Number 또는 해당 하위 클래스의 인스턴스만 허용하려고 할 수 있습니다. 이것이 경계 유형 매개변수의 용도입니다.

제한된 유형 매개변수를 선언하려면 유형 매개변수의 이름, extends 키워드, 상한값을 차례로 나열하십시오.

예시

다음 예는 extends가 "확장"(클래스에서와 같이) 또는 "구현"(인터페이스에서와 같이)을 의미하기 위해 일반적인 의미로 사용되는 방법을 보여줍니다. 이 예제는 세 개의 Comparable 객체 중 가장 큰 값을 반환하는 Generic 메서드입니다. -

라이브 데모
public class MaximumTest {
   // determines the largest of three Comparable objects
   
   public static <T extends Comparable<T>> T maximum(T x, T y, T z) {
      T max = x;   // assume x is initially the largest
      
      if(y.compareTo(max) > 0) {
         max = y;   // y is the largest so far
      }
      
      if(z.compareTo(max) > 0) {
         max = z;   // z is the largest now                 
      }
      return max;   // returns the largest object   
   }
   
   public static void main(String args[]) {
      System.out.printf("Max of %d, %d and %d is %d\n\n", 
         3, 4, 5, maximum( 3, 4, 5 ));

      System.out.printf("Max of %.1f,%.1f and %.1f is %.1f\n\n",
         6.6, 8.8, 7.7, maximum( 6.6, 8.8, 7.7 ));

      System.out.printf("Max of %s, %s and %s is %s\n","pear",
         "apple", "orange", maximum("pear", "apple", "orange"));
   }
}

이것은 다음과 같은 결과를 생성합니다 -

출력

Max of 3, 4 and 5 is 5

Max of 6.6,8.8 and 7.7 is 8.8

Max of pear, apple and orange is pear

일반 클래스

제네릭 클래스 선언은 클래스 이름 뒤에 형식 매개변수 섹션이 온다는 점을 제외하고는 제네릭이 아닌 클래스 선언처럼 보입니다.

제네릭 메서드와 마찬가지로 제네릭 클래스의 형식 매개 변수 섹션에는 쉼표로 구분된 하나 이상의 형식 매개 변수가 있을 수 있습니다. 이러한 클래스는 하나 이상의 매개변수를 허용하기 때문에 매개변수화된 클래스 또는 매개변수화된 유형으로 알려져 있습니다.

예시

다음 예는 일반 클래스를 정의하는 방법을 보여줍니다 -

라이브 데모
public class Box<T> {
   private T t;

   public void add(T t) {
      this.t = t;
   }

   public T get() {
      return t;
   }

   public static void main(String[] args) {
      Box<Integer> integerBox = new Box<Integer>();
      Box<String> stringBox = new Box<String>();
    
      integerBox.add(new Integer(10));
      stringBox.add(new String("Hello World"));

      System.out.printf("Integer Value :%d\n\n", integerBox.get());
      System.out.printf("String Value :%s\n", stringBox.get());
   }
}

이것은 다음과 같은 결과를 생성합니다 -

출력

Integer Value :10
String Value :Hello World

java

  1. Java 데이터 유형(기본)
  2. 자바 연산자
  3. 자바 주석
  4. 자바 for-each 루프
  5. 자바 문자열
  6. 자바 인터페이스
  7. 자바 리소스 사용
  8. 자바 주석
  9. 자바 어설션
  10. 자바 타입 캐스팅