JavaRush /Java Blog /Random-TK /Java funksional interfeýsler

Java funksional interfeýsler

Toparda çap edildi
Java-da işleýän interfeýs, diňe 1 abstrakt usuly öz içine alýan interfeýsdir. Esasy maksat, lambda aňlatmalarynda we usul salgylanmalarynda ulanmak.
Java funksional interfeýsler - 1
1 abstrakt usulyň bolmagy ýeke-täk şert, şonuň üçin işleýän interfeýs defaultusullary hem öz içine alyp biler static. Funksiýa interfeýsine @FunctionalInterface düşündirişini goşup bilersiňiz. Bu hökmany däl, ýöne bu düşündiriş bar bolsa, 1 abstrakt usul bar bolsa, kod düzülmez. @FunctionalInterface goşmak maslahat berilýär. Bu, interfeýsi kimdir biriniň interfeýsine täze abstrakt usul goşjakdygyna we işlemezliginden gorkman, lambda aňlatmalarynda interfeýsi ulanmaga mümkinçilik berer. “Java” -da ýerleşdirilen funksional interfeýsler bar java.util.function. Men olar hakda jikme-jik durup geçmerin. Iň köp ulanylýanlaryň: Sarp ediji <T> , Funksiýa <T, R> , Predikat <T> , üpjün ediji <T> , UnaryOperator <T> we olaryň Bi görnüşleri. Has giňişleýin maglumatlary resminamalar sahypasynda tapyp bilersiňiz: Package 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
    }
}
Javaöne Java dil spesifikasiýasynda beýan edilen bir inçe nokat bar: "interfeýsler Obýektden miras almaýar, tersine, Obýekt bilen birmeňzeş usullaryň köpüsini aç-açan yglan edýär." Bu, funksional interfeýsleriň synpda kesgitlenen abstrakt usullary goşup biljekdigini aňladýar Object. Aşakdaky kody dogry, düzmek ýa-da iş wagty ýalňyşlyklary bolmaz:
@FunctionalInterface
public interface Comparator<T> {
   int compare(T o1, T o2);
   boolean equals(Object obj);
   // другие default or static методы
}
Söhbetdeşlik wagtynda seresap boluň! Sag boluň!
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION