java
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.
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 −
Semua deklarasi metode generik memiliki bagian parameter tipe yang dibatasi oleh kurung sudut (
Setiap bagian parameter tipe berisi satu atau lebih parameter tipe yang dipisahkan dengan koma. Parameter tipe, juga dikenal sebagai variabel tipe, adalah pengidentifikasi yang menentukan nama tipe generik.
Parameter tipe dapat digunakan untuk mendeklarasikan tipe kembalian dan bertindak sebagai placeholder untuk tipe argumen yang diteruskan ke metode generik, yang dikenal sebagai argumen tipe aktual.
Tubuh metode generik dideklarasikan seperti metode lainnya. Perhatikan bahwa parameter tipe hanya dapat mewakili tipe referensi, bukan tipe primitif (seperti int, double, dan char).
Contoh berikut mengilustrasikan bagaimana kita dapat mencetak array dengan tipe berbeda menggunakan metode Generik tunggal
Demo Langsungpublic 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
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
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 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 Langsungpublic 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
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
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 berikut mengilustrasikan bagaimana kita dapat mendefinisikan kelas generik
Demo Langsungpublic 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
Integer Value :10 String Value :Hello World
java
Polimorfisme Java Dalam tutorial ini, kita akan belajar tentang polimorfisme Java dan implementasinya dengan bantuan contoh. Polimorfisme adalah konsep penting dari pemrograman berorientasi objek. Ini berarti lebih dari satu bentuk. Artinya, entitas yang sama (metode atau operator atau objek) dapa
Pengecualian Java Dalam tutorial ini, kita akan belajar tentang exception di Java. Kami akan membahas kesalahan, pengecualian, dan berbagai jenis pengecualian di Java. Pengecualian adalah kejadian tak terduga yang terjadi selama eksekusi program. Ini mempengaruhi aliran instruksi program yang dapat
Antarmuka Koleksi Java Dalam tutorial ini, kita akan belajar tentang antarmuka Java Collection dan subinterface-nya. Collection antarmuka adalah antarmuka akar kerangka koleksi Java. Tidak ada implementasi langsung dari antarmuka ini. Namun, ini diimplementasikan melalui subinterfacenya seperti L
Daftar Java Dalam tutorial ini, kita akan belajar tentang antarmuka Daftar di Java dan metodenya. Dalam Java, List interface adalah kumpulan terurut yang memungkinkan kita untuk menyimpan dan mengakses elemen secara berurutan. Ini memperluas Collection antarmuka. Kelas yang Menerapkan Daftar Seja