Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> java

Java - Generik

Alangkah baiknya jika kita dapat menulis metode pengurutan tunggal yang dapat mengurutkan elemen dalam array Integer, array String, atau array jenis apa pun yang mendukung pengurutan.

Java Generik metode dan kelas generik memungkinkan pemrogram untuk menentukan, dengan satu deklarasi metode, satu set metode terkait, atau dengan satu deklarasi kelas, satu set tipe terkait, masing-masing.

Generik juga menyediakan keamanan tipe waktu kompilasi yang memungkinkan pemrogram menangkap tipe yang tidak valid pada waktu kompilasi.

Menggunakan konsep Java Generic, kita mungkin menulis metode generik untuk mengurutkan array objek, kemudian memanggil metode generik dengan array Integer, Array ganda, array String, dan seterusnya, untuk mengurutkan elemen array.

Metode Umum

Anda dapat menulis deklarasi metode generik tunggal yang dapat dipanggil dengan argumen dari tipe yang berbeda. Berdasarkan jenis argumen yang diteruskan ke metode generik, kompiler menangani setiap pemanggilan metode dengan tepat. Berikut adalah aturan untuk mendefinisikan Metode Generik −

Contoh

Contoh berikut mengilustrasikan bagaimana kita dapat mencetak array dengan tipe berbeda menggunakan metode Generik tunggal

Demo Langsung
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
   }
}

Ini akan menghasilkan hasil berikut

Keluaran

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

Parameter Jenis Terikat

Mungkin ada saatnya Anda ingin membatasi jenis jenis yang diizinkan untuk diteruskan ke parameter jenis. Misalnya, metode yang beroperasi pada angka mungkin hanya ingin menerima instance Number atau subclass-nya. Inilah gunanya parameter tipe terbatas.

Untuk mendeklarasikan parameter tipe terbatas, cantumkan nama parameter tipe, diikuti dengan kata kunci extends, diikuti dengan batas atasnya.

Contoh

Contoh berikut mengilustrasikan bagaimana perluasan digunakan dalam pengertian umum yang berarti "memperluas" (seperti dalam kelas) atau "menerapkan" (seperti dalam antarmuka). Contoh ini adalah metode Generik untuk mengembalikan yang terbesar dari tiga objek Sebanding −

Demo Langsung
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"));
   }
}

Ini akan menghasilkan hasil berikut

Keluaran

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

Kelas Umum

Deklarasi kelas generik terlihat seperti deklarasi kelas non-generik, kecuali bahwa nama kelas diikuti oleh bagian parameter tipe.

Seperti metode generik, bagian parameter tipe dari kelas generik dapat memiliki satu atau lebih parameter tipe yang dipisahkan dengan koma. Kelas-kelas ini dikenal sebagai kelas berparameter atau tipe berparameter karena mereka menerima satu atau lebih parameter.

Contoh

Contoh berikut mengilustrasikan bagaimana kita dapat mendefinisikan kelas generik

Demo Langsung
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());
   }
}

Ini akan menghasilkan hasil berikut

Keluaran

Integer Value :10
String Value :Hello World

java

  1. Tipe Data Java (Primitif)
  2. Operator Jawa
  3. Komentar Jawa
  4. Java untuk setiap Loop
  5. String Jawa
  6. Antarmuka Jawa
  7. Java mencoba-dengan-sumber daya
  8. Anotasi Jawa
  9. Pernyataan Jawa
  10. Pengecoran Tipe Jawa