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

Operator Java Diamond:Menyederhanakan Generik di Java 7+

Operator Berlian Java

Operator berlian diperkenalkan di Java 7 untuk membuat kode lebih mudah dibaca untuk Generik. Generik adalah jenis argumen. Dengan menggunakan generik kita dapat meneruskan objek apa pun untuk diproses oleh metode kelas. Misalnya, jika kita membuat daftar string sebelum Java 7, maka kita harus menggunakan sintaks berikut untuk membuat instance daftar string dengan objek ArrayList.

List<String> listOfStrings = new ArrayList<String>();

Mulai Java 7 dan seterusnya, kita dapat menggunakan operator berlian untuk menyederhanakan sintaks di atas sebagai berikut −

List<String> listOfStrings = new ArrayList<>();

Tapi itu tidak bisa digunakan dengan kelas dalam Anonymous. Misalnya, kami tidak dapat menghilangkan jenis objek dari operator berlian dalam sintaksis di bawah ini sebelum Java 9.

Handler<Integer> intHandler = new Handler<Integer>(1) {
 @Override
 public void handle() {
 System.out.println(content);
 }
};

Operator Berlian di Kelas Anonim

Di Java 9, operator berlian juga dapat digunakan dengan kelas anonim untuk menyederhanakan kode dan meningkatkan keterbacaan.

Handler<Integer> intHandler = new Handler<>(1) {
 @Override
 public void handle() {
 System.out.println(content);
 }
};

Operator Berlian di Java 7, Java 8

Dalam contoh di bawah ini, kita telah membuat kelas anonim untuk kelas abstrak Handler yang menerima argumen umum dan meneruskan tipe objek saat membuat kelas anonim karena kita harus meneruskan argumen tipe jika tidak, program tidak akan dapat dikompilasi.

Contoh

public class Tester {
 public static void main(String[] args) {
 // create an Anonymous class to handle 1
 // Here we need to pass Type arguments in diamond operator 
 // before Java 9 otherwise compiler will complain error
 Handler<Integer> intHandler = new Handler<Integer>(1) {
 @Override
 public void handle() {
 System.out.println(content);
 }
 };
 intHandler.handle();
 // create an Anonymous class to handle 2 
 Handler<? extends Number> intHandler1 = new Handler<Number>(2) {
 @Override
 public void handle() {
 System.out.println(content);
 }
 };
 intHandler1.handle();
 Handler<?> handler = new Handler<Object>("test") {
 @Override
 public void handle() {
 System.out.println(content);
 }
 };
 handler.handle(); 
 } 
}
abstract class Handler<T> {
 public T content;
 public Handler(T content) {
 this.content = content; 
 }
 
 abstract void handle();
}

Keluaran

Mari kita kompilasi dan jalankan program di atas, ini akan menghasilkan hasil sebagai berikut −

1
2
Test

Operator Berlian Java 9 dan seterusnya

Dengan Java 9, kita dapat menggunakan operator <> dengan kelas anonim seperti yang ditunjukkan di bawah ini.

Contoh

Dalam contoh di bawah ini, kita telah membuat kelas anonim untuk kelas abstrak Handler yang menerima argumen umum tetapi tanpa tipe objek saat membuat kelas anonim karena kita tidak perlu meneruskan argumen tipe. Kompiler menyimpulkan tipe itu sendiri.

public class Tester {
 public static void main(String[] args) {
 // create an Anonymous class to handle 1
 // Here we do not need to pass Type arguments in diamond operator 
 // as Java 9 compiler can infer the type automatically
 Handler<Integer> intHandler = new Handler<>(1) {
 @Override
 public void handle() {
 System.out.println(content);
 }
 };
 intHandler.handle();
 Handler<? extends Number> intHandler1 = new Handler<>(2) {
 @Override
 public void handle() {
 System.out.println(content);
 }
 };
 intHandler1.handle();
 Handler<?> handler = new Handler<>("test") {
 @Override
 public void handle() {
 System.out.println(content);
 }
 };
 handler.handle(); 
 } 
}
abstract class Handler<T> {
 public T content;
 public Handler(T content) {
 this.content = content; 
 }
 
 abstract void handle();
}

Keluaran

Mari kita kompilasi dan jalankan program di atas, ini akan menghasilkan hasil sebagai berikut −

1
2
Test

java

  1. Kelas Java ObjectInputStream
  2. Kelas Pembungkus Java
  3. Java 8 - Panduan Singkat
  4. Java LinkedBlockingQueue
  5. Java - Dasar-dasar Applet
  6. Apa itu Kelas dan Objek di Java OOPS? Belajar dengan Contoh
  7. Java Hello World:Cara Menulis Program Java Pertama Anda dengan Contoh
  8. Algoritma Java
  9. Java HashMap
  10. Java 9 - Penyempurnaan API Streaming