cari
RumahJavajavaTutorialOperator bertitik dua (::) dalam Java

Operator bertitik dua (::) dalam Java

Aug 26, 2023 pm 01:29 PM
javapengaturcaraanpengendali kolon berganda

Operator bertitik dua (::) dalam Java

Di Jawa, pentadbir dua kali ganda (::), atau dipanggil pentadbir rujukan strategi, ialah elemen kuat yang dibentangkan dalam Java 8. Ia memberikan kaedah yang ringkas dan kaya untuk merujuk kepada teknik atau pembina tanpa menimbulkannya pentadbir menambah baik pada kod dan meningkatkan koheren kod, menjadikannya instrumen penting untuk pereka bentuk Dalam artikel ini, kami akan menyiasat struktur bahasa pentadbir dua kali ganda, bercakap tentang aplikasinya dan memberikan panduan kod untuk pemahaman yang lebih baik.

.

Sintaks

Pengendali titik dua bertindih terdiri daripada dua titik bertindih (::) diapit antara nama kelas atau rujukan objek dan nama kaedah. Ia digunakan sebagai notasi ringkas untuk kaedah rujukan atau pembina di Jawa.

// A functional interface with a single abstract method
interface Printer {
   void print(String message);
}

// A class that implements the Printer interface
class ConsolePrinter {
   public static void printMessage(String message) {
      System.out.println(message);
   }
}

public class Main {
   public static void main(String[] args) {
      Printer printer = ConsolePrinter::printMessage;
      printer.print("Hello, World!");
   }
}

Penjelasan tatabahasa

Dalam kod di atas, kami menggunakan titik gabungan utiliti yang dipanggil Pencetak untuk menentukan kelas dengan satu kaedah dinamik print(). Kelas ConsolePrinter melaksanakan titik sambungan ini dan menyediakan pelaksanaan untuk kaedah printMessage(). Dalam kelas Principal, kami mencipta contoh Printer menggunakan pengendali bertitik dua untuk merujuk kaedah printMessage() kelas ConsolePrinter. Akhir sekali, kami memanggil kaedah print() contoh pencetak, yang seterusnya memanggil kaedah printMessage().

Algoritma

  • Untuk menggunakan pengendali bertitik dua di Jawa, ikut langkah ini -

  • Tentukan antara muka berfungsi dengan kaedah abstrak tunggal.

  • Laksanakan antara muka dalam kelas dan sediakan pelaksanaan kaedah.

  • Gunakan operator bertitik dua untuk merujuk kepada kaedah atau pembina

  • Gunakan pengendali bertindih dua untuk mencipta contoh antara muka berfungsi.

  • Memanggil kaedah ini pada contoh akan memanggil kaedah atau pembina yang dirujuk.

Kaedah 1: Rujukan kaedah menggunakan operator dua kolon

Pendekatan 1 melibatkan penggunaan operator bertitik dua untuk merujuk kaedah statik kelas. Pendekatan ini berguna apabila kita ingin menghantar rujukan kaedah yang tidak bergantung pada mana-mana pembolehubah contoh.

Contoh

// A functional interface with a single abstract method
interface Calculator {
   int calculate(int a, int b);
}

class MathUtils {
   public static int add(int a, int b) {
      return a + b;
   }
}

public class Main {
   public static void main(String[] args) {
      Calculator calculator = MathUtils::add;
      int result = calculator.calculate(5, 3);
      System.out.println("Result: " + result);
   }
}

Output

Result: 8

Penjelasan

Kalkulator ialah antara muka berfungsi dengan kaedah abstrak kira(). Fungsi MathUtils statik add() digunakan untuk menambah dua nombor. Pengendali bertindih berganda mencipta contoh Kalkulator yang merujuk kaedah MathUtils add(). Kami memanggil kaedah pengiraan () kalkulator dengan dua nombor. Hasil keluaran konsol.

Kaedah 2: Gunakan pembolehubah contoh untuk menggunakan pengendali bertitik dua untuk rujukan kaedah

Pendekatan 2 melibatkan penggunaan pengendali bertitik dua untuk merujuk kaedah contoh objek tertentu.

Contoh

import java.util.ArrayList;
import java.util.List;

class Person {
   private String name;

   public Person(String name) {
      this.name = name;
   }

   public void printName() {
      System.out.println(name);
   }
}

public class Main {
   public static void main(String[] args) {
      List<Person> persons = new ArrayList<>();
      persons.add(new Person("Alice"));
      persons.add(new Person("Bob"));

      persons.forEach(Person::printName);
   }
}

Output

Alice
Bob

Penjelasan

Dalam contoh ini, kami mempunyai kelas Individu dengan strategi printName() untuk mencetak nama individu. Kami mencipta senarai projek Individu dan menambah dua contoh. Menggunakan pengendali bertitik dua, kami merujuk strategi printName() kelas Individu dalam kaedah forEach() antara muka Senarai. Ini menyebabkan kaedah printName() dipanggil, mencetak nama setiap elemen dalam senarai ke konsol.

Kaedah 3: Gunakan pengendali bertitik dua untuk merujuk kepada kaedah contoh bagi mana-mana objek.

Pendekatan 3 melibatkan merujuk kaedah contoh bagi mana-mana objek sewenang-wenangnya daripada jenis tertentu menggunakan pengendali bertitik dua.

Contoh

import java.util.Arrays;
import java.util.List;

class StringUtil {
   public boolean isPalindrome(String s) {
      String reversed = new StringBuilder(s).reverse().toString();
      return s.equals(reversed);
   }
}

public class Main {
   public static void main(String[] args) {
      List<String> words = Arrays.asList("level", "hello", "radar", "world");

      StringUtil stringUtil = new StringUtil();
      long count = words.stream().filter(stringUtil::isPalindrome).count();

      System.out.println("Number of palindromic words: " + count);
   }
}

Output

Number of palindromic words: 2

Penjelasan

Dalam sekerap kod ini, kelas StringUtil menguji palindrom dengan isPalindrome(). .

Pendekatan 4: Rujukan pembina menggunakan operator dua kolon.

Kaedah 4 melibatkan rujukan pembina menggunakan pengendali dua kolon.

Contoh

import java.util.function.Supplier;

class Employee {
   public String name;
   public int age;

   public Employee() {
      // Default constructor
   }

   public Employee(String name, int age) {
      this.name = name;
      this.age = age;
   }

   public String toString() {
      return "Employee [name=" + name + ", age=" + age + "]";
   }
}

public class Main {
   public static void main(String[] args) {
      Supplier<employee> employeeSupplier = Employee::new;
      Employee employee = employeeSupplier.get();

      employee.name = "John Doe";
      employee.age = 30;

      System.out.println(employee);
   }
}
</employee>

Output

Employee [name=John Doe, age=30]

Penjelasan

Dalam model ini, kami mempunyai kelas Perwakilan dengan pembina yang ditentukan. Menggunakan pengendali kolon berganda, kami mencipta contoh titik interaksi fungsi Pembekal yang merujuk kepada pembina Perwakilan. Kemudian, kami memanggil kaedah get() pada contoh employeeSupplier untuk mendapatkan objek Perwakilan yang lain. Kami menetapkan nama dan umur pekerja dan mencetaknya ke konsol menggunakan kaedah toString().

Kesimpulan

Pengendali bertitik dua (::) di Java ialah elemen berkuasa yang diperkenalkan di Java 8. Ia menyediakan cara yang ringkas dan kaya untuk merujuk kaedah atau pembina tanpa memanggilnya secara langsung. Dengan menggunakan pengendali bertitik dua, kami boleh menambah baik kod, meningkatkan kebolehbacaan dan memanfaatkan faedah pengaturcaraan berfungsi dalam Java. Memahami sintaks dan kaedah penggunaan berbeza pengendali bertitik dua adalah perlu untuk setiap pembangun Java. Oleh itu, pastikan anda meneroka dan menggunakan ciri ini dalam projek Java masa hadapan anda untuk meningkatkan pengalaman pengekodan anda.

Atas ialah kandungan terperinci Operator bertitik dua (::) dalam Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Artikel ini dikembalikan pada:tutorialspoint. Jika ada pelanggaran, sila hubungi admin@php.cn Padam
Bagaimanakah JVM mengendalikan perbezaan dalam sistem operasi API?Bagaimanakah JVM mengendalikan perbezaan dalam sistem operasi API?Apr 27, 2025 am 12:18 AM

JVM Mengendalikan Perbezaan API Sistem Operasi melalui JavanativeInterface (JNI) dan Perpustakaan Standard Java: 1. JNI membenarkan kod Java untuk memanggil kod tempatan dan terus berinteraksi dengan API Sistem Operasi. 2. Perpustakaan Standard Java menyediakan API bersatu, yang dipetakan secara dalaman kepada API sistem operasi yang berbeza untuk memastikan kod tersebut berjalan di seluruh platform.

Bagaimanakah modulariti yang diperkenalkan dalam kemerdekaan platform kesan Java 9?Bagaimanakah modulariti yang diperkenalkan dalam kemerdekaan platform kesan Java 9?Apr 27, 2025 am 12:15 AM

modularitydoesnotdirectlyaffectjava'splatformindected.java'splatformindectenceismaintybythejvm, butmodularityinfluencesapplicationstructureandManagement, indirectlyimpactingplatformindect.1) DeploymentandmentandmentweMbecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecom

Apakah bytecode, dan bagaimanakah ia berkaitan dengan kemerdekaan platform Java?Apakah bytecode, dan bagaimanakah ia berkaitan dengan kemerdekaan platform Java?Apr 27, 2025 am 12:06 AM

BytecodeinjavaistheintermediaterepresentationThateNableSplatformindant.1) javacodeiscompiledintobytecodestoredin.classfiles.2)

Mengapa Java dianggap sebagai bahasa bebas platform?Mengapa Java dianggap sebagai bahasa bebas platform?Apr 27, 2025 am 12:03 AM

JavaachievesplatformindependencethroughavavaVirtualMachine (JVM), yang mana -yexeCuteSbytecodeonanydeviceWIjvm.1)

Bagaimanakah antara muka pengguna grafik (GUI) menyajikan cabaran untuk kemerdekaan platform di Java?Bagaimanakah antara muka pengguna grafik (GUI) menyajikan cabaran untuk kemerdekaan platform di Java?Apr 27, 2025 am 12:02 AM

Kemerdekaan platform dalam pembangunan Javagui menghadapi cabaran, tetapi boleh ditangani dengan menggunakan swing, javafx, penampilan penyatuan, pengoptimuman prestasi, perpustakaan pihak ketiga dan ujian silang platform. Pembangunan Javagui bergantung pada AWT dan Swing, yang bertujuan untuk menyediakan konsistensi rentas platform, tetapi kesan sebenar berbeza dari sistem operasi ke sistem operasi. Penyelesaian termasuk: 1) Menggunakan Swing dan Javafx sebagai Toolkit GUI; 2) menyatukan penampilan melalui uimanager.setlookandfeel (); 3) mengoptimumkan prestasi untuk memenuhi platform yang berbeza; 4) menggunakan perpustakaan pihak ketiga seperti Apachepivot atau SWT; 5) Melaksanakan ujian silang platform untuk memastikan konsistensi.

Apakah aspek pembangunan Java yang bergantung kepada platform?Apakah aspek pembangunan Java yang bergantung kepada platform?Apr 26, 2025 am 12:19 AM

Javadevelopmentisnotentirelyplatform-independentduetoseveralfactors.1) jvmvariationsaffecperformanceandbehavioracrossdifferentos.2) nativelibrariesviajniintroduceplatform-specificiSsues.3)

Adakah terdapat perbezaan prestasi semasa menjalankan kod Java pada platform yang berbeza? Kenapa?Adakah terdapat perbezaan prestasi semasa menjalankan kod Java pada platform yang berbeza? Kenapa?Apr 26, 2025 am 12:15 AM

Kod Java akan mempunyai perbezaan prestasi apabila berjalan pada platform yang berbeza. 1) Strategi pelaksanaan dan pengoptimuman JVM adalah berbeza, seperti OracleJDK dan OpenJDK. 2) Ciri -ciri sistem operasi, seperti pengurusan memori dan penjadualan thread, juga akan menjejaskan prestasi. 3) Prestasi boleh ditingkatkan dengan memilih JVM yang sesuai, menyesuaikan parameter JVM dan pengoptimuman kod.

Apakah beberapa batasan kemerdekaan platform Java?Apakah beberapa batasan kemerdekaan platform Java?Apr 26, 2025 am 12:10 AM

Java'splatformindecthaslimitationscludingperformanceOverhead, VersionCompateIssues, cabaranwithnativelibraryintegration, platform-specificfeatures, danjvminstallation/penyelenggaraan.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Muat turun versi mac editor Atom

Muat turun versi mac editor Atom

Editor sumber terbuka yang paling popular

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

Dreamweaver Mac版

Dreamweaver Mac版

Alat pembangunan web visual

VSCode Windows 64-bit Muat Turun

VSCode Windows 64-bit Muat Turun

Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

Versi Mac WebStorm

Versi Mac WebStorm

Alat pembangunan JavaScript yang berguna