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

  • Blunty

    Blunty

    13 Mart 2006
  • BurnedInDotCom

    BurnedInDotC

    3 NİSAN 2010
  • MrMimoB

    MrMimoB

    11 NİSAN 2011