SORU
12 AĞUSTOS 2013, PAZARTESİ


Durum oluşturduğunda 8 Lambda işlevi, Java?

String bir parametre vardır ve bir int döndüren bir yöntem için bir başvuru oluşturmak için nasıl biliyorum,:

Function<String, Integer>

Ancak, bu işlevi bir özel durum oluşturursa, olarak tanımlanan ki: çalışmıyor

Integer myMethod(String s) throws IOException

Nasıl bu başvuru tanımlayabilir ki?

CEVAP
12 AĞUSTOS 2013, PAZARTESİ


Nasıl bu başvuru tanımlayabilir ki?

Edemezsin. Aşağıdakilerden birini yapmanız gerekir.

Kontrol özel durum bildirir kendi işlevsel arayüzü tanımlayın:

 @FunctionalInterface
 public interface FunctionThatThrows<T, R> {
     R apply(T t) throws IOException;
 }

İşaretli bir istisna beyan etmeyen bir yöntem Integer myMethod(String s) Wrap:

public Integer myWrappedMethod(String s) {
    try {
        return myMethod(s);
    }
    catch(IOException e) {
        throw new RuntimeException(e);
    }
}

ve sonra

Function<String, Integer> f = (String t) -> myWrappedMethod(t);

ya

Function<String, Integer> f =
    (String t) -> {
        try {
            return myMethod(t);
        }
        catch(IOException e) {
            throw new RuntimeException(e);
        }
    };

@assylias Stream<String>.map Function<T, R>, bekleyen başka bir yöntem ile bu kullanmak için çalışıyorsanız, size güzel bir noktaya değindihayırama seçim ve kontrolsüz bir istisna olarak yakalamak için yeniden oluşturma.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bobinire

    bobinire

    24 EYLÜL 2006
  • FullMag

    FullMag

    15 ŞUBAT 2007
  • julioissk84life

    julioissk84l

    18 ŞUBAT 2008