SORU
28 Kasım 2012, ÇARŞAMBA


Nasıl Java 8 lambda parametre olarak alan bir metod tanımlamak mı?

Java 8 yöntemler Lambda ifadesi olarak oluşturulabilir ve referans (kaputun altında küçük bir çalışma ile) geçirilebilir. Örnekler Lambda ve yöntemler, ama bir yöntemi parametre olarak lambda alarak yapmak için nasıl örnekler ile oluşturulmuş kullanılan online var. Bunun için sözdizimi nedir?

MyClass.method((a, b) -> a b);


class MyClass{
  //How do I define this method?
  static int method(Lambda l){
    return l(5, 10);
  }
}

CEVAP
28 Kasım 2012, ÇARŞAMBA


Lambda Ara-site tamamen bir yapısı vardır: uygun yöntemi ile bir Arayüz kabul yerine lambda Lambda alıcı bir yer olduğunu bilmeniz gerekir.

Diğer bir deyişle, sizin belirlediğiniz ya da (tek bir yöntem ile bir arayüz gibi) istediğiniz tam olarak kabul eder ve döndürür işlevsel bir arayüz kullanın.

Bu Java için 8 sık kullanılan java.util.function arabirim türleri kümesi (JavaDoc hakkında ipucu için Maurice Naftalin sayesinde) ile birlikte gelir.

Bu özel kullanım için java.util.function.IntBinaryOperator ** 7 bu şekilde yazabilir misin yani a single int applyAsInt(int left, int right) method ile

static int method(IntBinaryOperator op){
    return op.applyAsInt(5, 10);
}

Ama sadece kendi arayüzü tanımlamak ve bu gibi kullanabilirsiniz:

public interface TwoArgIntOperator {
    public int op(int a, int b);
}

//elsewhere:
static int method(TwoArgIntOperator operator) {
    return operator.op(5, 10);
}

Kendi arayüzü kullanarak daha net bir şekilde niyetini gösteren bir isim olabilir avantaj.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Chanre Joubert

    Chanre Joube

    27 Temmuz 2012
  • RiceBunny

    RiceBunny

    16 ŞUBAT 2006
  • Study with Substance P

    Study with S

    31 Mayıs 2008