JavaRush /جاوا بلاگ /Random-SD /جاوا فنڪشنل انٽرفيس

جاوا فنڪشنل انٽرفيس

گروپ ۾ شايع ٿيل
جاوا ۾ هڪ فنڪشنل انٽرفيس هڪ انٽرفيس آهي جنهن ۾ صرف 1 خلاصو طريقو آهي. بنيادي مقصد ان کي استعمال ڪرڻ آهي lambda اظهار ۽ طريقن جي حوالي سان.
جاوا فنڪشنل انٽرفيس - 1
1 تجريدي طريقي جي موجودگي صرف شرط آهي، تنهنڪري هڪ فنڪشنل انٽرفيس پڻ defaultطريقن تي مشتمل ٿي سگهي ٿو static. توھان شامل ڪري سگھو ٿا @FunctionalInterface تشريح فنڪشنل انٽرفيس ۾. اهو ضروري ناهي، پر جيڪڏهن هي تشريح موجود آهي، ڪوڊ مرتب نه ٿيندو جيڪڏهن 1 کان گهٽ يا وڌيڪ خلاصو طريقو آهي. اهو @FunctionalInterface شامل ڪرڻ جي سفارش ڪئي وئي آهي. هي توهان کي اجازت ڏيندو ته انٽرفيس کي استعمال ڪرڻ جي لامبڊا ايڪسپريسز ۾ بغير پريشان ٿيڻ جي ته ڪو ماڻهو انٽرفيس ۾ نئون خلاصو طريقو شامل ڪندو ۽ اهو ڪم ڪرڻ بند ٿي ويندو. جاوا ۾ بلٽ ان فنڪشنل انٽرفيس موجود آهن java.util.function. مان انهن تي تفصيل سان نه ڳالهائيندس. مان نوٽ ڪريان ٿو ته اڪثر استعمال ٿيل آهن: صارفين<T> , Function<T,R> , Predicate<T> , Supplier<T> , UnaryOperator<T> ۽ انهن جا ٻه فارم. وڌيڪ تفصيل دستاويزي صفحي تي ملي سگھن ٿا: پيڪيج 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
    }
}
پر اهو ظاهر ٿئي ٿو ته جاوا ٻوليء جي وضاحت ۾ بيان ڪيل هڪ ذيلي نقطو آهي: "انٽرفيس آبجیکٹ کان ورثي ۾ نه ٿا اچن، بلڪه واضح طور تي ڪيترن ئي طريقن کي ظاهر ڪن ٿا جيئن اعتراض." هن جو مطلب آهي ته فنڪشنل انٽرفيس اضافي طور تي ڪلاس ۾ بيان ڪيل تجريدي طريقا شامل ڪري سگھن ٿا Object. هيٺ ڏنل ڪوڊ صحيح آهي، اتي ڪو تاليف يا رن ٽائم غلطيون نه هونديون.
@FunctionalInterface
public interface Comparator<T> {
   int compare(T o1, T o2);
   boolean equals(Object obj);
   // другие default or static методы
}
انٽرويو دوران محتاط رھ! سدا خوشقسمت رهو!
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION