2015-12-19 13 views
6

を持つためにラムダ式を作成するために、私はこのためにラムダ式を作成するには、どのようにこのインタフェースがどのように機能インタフェースは、一般的な方法

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

のための匿名クラスを作成することができる機能のインタフェースに

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

を持っています。

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

チェックこの質問:

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

そして、次のようにそれを使用http://stackoverflow.com/q/22588518/1679863 –

+0

ファクター法にあなたのラムダを、および使用メソッド参照。 –

答えて

4

λスコープのジェネリックをラムダ式で使用することはできません。型MyInterfaceの方法の変更は、あなたがクラススコープでジェネリックを設定する必要があり、一般的な

である:それは

不正なラムダ式をスローします。

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