Rumah > Java > javaTutorial > Antara Muka Fungsian di Jawa

Antara Muka Fungsian di Jawa

王林
Lepaskan: 2024-08-30 16:04:14
asal
631 orang telah melayarinya

Ia mula diperkenalkan dalam java 8. Antara muka berfungsi boleh ditakrifkan sebagai antara muka dengan kaedah abstrak tunggal. Ini bermakna antara muka berfungsi dalam java hanya menyediakan satu fungsi asas sahaja. Walau bagaimanapun, antara muka berfungsi boleh mengandungi kaedah statik dan lalai, sebagai tambahan kepada kaedah abstrak tunggal. java.util.function.Function, java.util.function.Predicate, UnaryOperator, BinaryOperator, Pembekal, Pengguna ialah contoh antara muka berfungsi terbina dalam dalam java.

Mulakan Kursus Pembangunan Perisian Percuma Anda

Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain

Sintaks Antara Muka Fungsian

Berikut ialah sintaks asas diberikan di bawah:

public interface MyFunctionalInterface(){
// abstract method
public void functionalMethod();
}
Salin selepas log masuk

Daripada sintaks di atas, kita dapat melihat bahawa antara muka bernama MyFunctionalInterface mengandungi hanya satu kaedah yang tidak dilaksanakan; itulah sebabnya ia boleh dianggap sebagai antara muka berfungsi. Ia juga boleh mengandungi kaedah statik dan lalai seperti yang ditunjukkan di bawah:

public interface MyFunctionalInterface(){
public default void defaultMethod(){
// default method logic goes here
}
public static void staticMethod(){
// static method logic goes here
}
// abstract method
public void functionalMethod();
}
Salin selepas log masuk

Selain itu, antara muka berfungsi boleh dilaksanakan menggunakan ungkapan Lambda seperti berikut:

MyFunctionalInterface functionalInterface = () ->{
// basic functionality logic goes here
}
Salin selepas log masuk
Salin selepas log masuk

Kami juga boleh menggunakan anotasi atau mengisytiharkan antara muka sebagai antara muka berfungsi. Berikut ialah cara antara muka berfungsi boleh diisytiharkan menggunakan anotasi:

MyFunctionalInterface functionalInterface = () ->{
// basic functionality logic goes here
}
Salin selepas log masuk
Salin selepas log masuk

@FunctionalInterface telah diperkenalkan dalam java 8 dan digunakan untuk ralat tahap pengkompil sekiranya antara muka melanggar peraturan antara muka berfungsi. Mengisytiharkan antara muka menggunakan anotasi @FunctionalInterface menjadikan antara muka berfungsi dan jika lebih daripada satu kaedah abstrak digunakan, ia akan menghasilkan ralat kompilasi.

Perkara Penting Berkenaan Antara Muka Fungsian

Berikut adalah beberapa perkara penting :

  • Hanya satu kaedah abstrak dibenarkan dalam antara muka fungsi. Jika anotasi @FunctionalInterface tidak digunakan dengan antara muka fungsi, maka lebih daripada satu kaedah abstrak boleh diisytiharkan, tetapi dalam kes itu, antara muka itu akan dianggap sebagai tidak berfungsi.
  • Penggunaan anotasi @FunctionalInterface adalah pilihan; ia hanya digunakan untuk semakan tahap pengkompil.
  • Antara muka berfungsi boleh mengandungi sebarang bilangan kaedah statik dan lalai.
  • Kaedah mengatasi daripada kelas induk tidak melanggar peraturan antara muka berfungsi.

Contoh:

@FunctionalInterface
public interface MyFunctionalInterface(){
// abstract method
public void functionalMethod();
@Override
public boolean equals(Object object);
//method overridden from parent class
}
Salin selepas log masuk

Memandangkan antara muka di atas mengatasi kaedah daripada kelas induk dan tidak mengisytiharkan berbilang kaedah abstrak, ia boleh dianggap sebagai antara muka berfungsi.

Contoh untuk Melaksanakan Antara Muka Fungsian

Kini kita akan melihat contoh kod java yang menunjukkan pengisytiharan dan penggunaan antara muka berfungsi java.

Contoh #1

Dalam contoh ini, kami akan menunjukkan cara antara muka fungsi terbina dalam antara muka java.util.function.function digunakan. Berikut ialah pengisytiharan antara muka Fungsi.

Antara Muka:

package java.util.function;
public interface Function<T,R>{
public <R> apply(T inputparams);
}
Salin selepas log masuk

Untuk menggunakan antara muka di atas, kami perlu melaksanakannya dalam kelas kami seperti berikut.

Kod:

import java.util.function.*;
public class FunctionalInterfaceDemo implements Function<Integer, Integer>{
@Override
public Integer apply (Integer n){
return n*n;
}
public static void main (String args[]){
FunctionalInterfaceDemo demo = new FunctionalInterfaceDemo ();
Integer sqroot= demo.apply(12);
System.out.println("Square root of 12 is " + sqroot);
}
}
Salin selepas log masuk

Output:

Antara Muka Fungsian di Jawa

Contoh #2

Dalam contoh ini, kita akan melihat cara antara muka ini dibuat menggunakan ungkapan lambda.

Kod:

public class FunctionalInterfaceDemo{
public static void main (String args[]){
// creating functional Interface instance
Runnable r = () -> {System.out.println ("Executing Thread........");};
new Thread(r).start();
}
}
Salin selepas log masuk

Output:

Antara Muka Fungsian di Jawa

Contoh #3

Dalam contoh ini, kita akan melihat penggunaan pengguna antara muka terbina dalam yang lain untuk mengulangi Senarai.

Kod:

import java.util.function.*;
import java.util.*;
public class FunctionalInterfaceDemo{
public static void main (String args[]){
List<String> list = new ArrayList<String>();
list.add("One");
list.add("Two");
list.add("Three");
list.add("Four");
list.add("Five");
list.add("Six");
// Iterate arraylist using consumer
list.forEach(new Consumer<String>(){
@Override
public void accept(String item){
System.out.println(item);
}
});
}
}
Salin selepas log masuk

Output:

Antara Muka Fungsian di Jawa

Kesimpulan

Artikel di atas memberikan pemahaman yang jelas tentang antara muka berfungsi dalam java. Kelebihan utama menggunakan antara muka berfungsi java 8 ialah sokongan untuk ungkapan lambda yang mengalih keluar banyak kod boilerplate, yang seterusnya menghasilkan pembangunan kod yang kecil, cekap dan lebih bersih.

Atas ialah kandungan terperinci Antara Muka Fungsian di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan