2015-12-19 19 views
6

sahibi olmak için lambda ifadesi oluşturmak için ben bunun için lambda ifade nasıl oluşturulur Bu arayüznasıl işlevsel arayüz jenerik yöntem

MyInterface obj = new MyInterface(){ 
    @Override 
    <T> T modify(Object obj){ 
     return (T) obj 
    } 
} 

anonim sınıf oluşturabileceğiniz bir işlevsel arayüzü

@FunctionalInterface 
interface MyInterface { 
    <T> T modify(Object); 
} 

var. yöntemi kapsamında

MyInterface obj -> {return (T) obj;}; // ! ERROR as T is undefined 
+2

kontrol bu soru:

@FunctionalInterface interface MyInterface<T> { T modify(Object obj); }

Sonra şöyle kullanmak http://stackoverflow.com/q/22588518/1679863 –

+0

Faktör bir yöntem haline lambda ve kullanımı bir yöntem referansı. –

cevap

4

Jenerik lambda ifadeleri olarak kullanılamaz. Bu

Yasadışı lambda ifade atar: Yöntem tipi MyInterface ait modifiye Sen sınıf kapsamda jenerik ayarlamanız gerekir

geneldir.

MyInterface obj2 = o -> {return o;};