JavaRush /Blog Jawa /Random-JV /Antarmuka fungsional Jawa

Antarmuka fungsional Jawa

Diterbitake ing grup
Antarmuka fungsional ing Jawa yaiku antarmuka sing mung ngemot 1 metode abstrak. Tujuan utama yaiku nggunakake ing ekspresi lambda lan referensi metode.
Antarmuka fungsional Jawa - 1
Anane 1 metode abstrak minangka siji-sijine kondisi, mula antarmuka fungsional uga bisa ngemot defaultmetode static. Sampeyan bisa nambah anotasi @FunctionalInterface menyang antarmuka fungsional. Iki ora dibutuhake, nanging yen anotasi iki ana, kode ora bakal kompilasi yen ana luwih utawa kurang saka 1 cara abstrak. Disaranake kanggo nambah @FunctionalInterface. Iki bakal ngidini sampeyan nggunakake antarmuka ing ekspresi lambda tanpa kuwatir yen ana wong sing bakal nambah metode abstrak anyar menyang antarmuka lan bakal mandheg fungsional. Jawa nduweni antarmuka fungsional sing dipasang ing java.util.function. Aku ora bakal manggon ing wong ing rinci. Aku nyathet yen sing paling kerep digunakake yaiku: Konsumen<T> , Fungsi<T,R> , Predikat<T> , Supplier<T> , UnaryOperator<T> lan formulir Bi . Rincian liyane bisa ditemokake ing kaca dokumentasi: Paket java.util.function
import java.util.function.Predicate;

//Определяем свой функциональный интерфейс
@FunctionalInterface
interface MyPredicate {
    boolean test(Integer value);
}

public class Tester {
    public static void main(String[] args) throws Exception {
        MyPredicate myPredicate = x -> x > 0;
        System.out.println(myPredicate.test(10));   //true

        //Аналогично, но используется встроенный функциональный интерфейс java.util.function.Predicate
        Predicate<Integer> predicate = x -> x > 0;
        System.out.println(predicate.test(-10));    //false
    }
}
Nanging ternyata ana siji titik subtle sing diterangake ing Spesifikasi Basa Jawa: "antarmuka ora entuk warisan saka Obyek, nanging kanthi implisit nyatakake akeh metode sing padha karo Obyek." Iki tegese antarmuka fungsional bisa uga ngemot metode abstrak sing ditetepake ing kelas kasebut Object. Kode ing ngisor iki bener, ora bakal ana kompilasi utawa kesalahan runtime:
@FunctionalInterface
public interface Comparator<T> {
   int compare(T o1, T o2);
   boolean equals(Object obj);
   // другие default or static методы
}
Ati-ati sajrone wawancara! Sugeng enjang!
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION