Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何为具有泛型方法的函数接口创建lambda表达式_Java_Generics_Lambda_Java 8 - Fatal编程技术网

Java 如何为具有泛型方法的函数接口创建lambda表达式

Java 如何为具有泛型方法的函数接口创建lambda表达式,java,generics,lambda,java-8,Java,Generics,Lambda,Java 8,我有一个功能接口 @FunctionalInterface interface MyInterface { <T> T modify(Object); } 方法范围内的泛型不能用于lambda表达式。它会扔 非法lambda表达式:MyInterface类型的方法modify是泛型的 您需要在类范围内设置泛型 @functioninterface 接口MyInterface{ T修改(objectobj); } 然后按如下方式使用: 检查这个问题:将lambda分解成一

我有一个功能接口

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

方法范围内的泛型不能用于lambda表达式。它会扔

非法lambda表达式:MyInterface类型的方法modify是泛型的

您需要在类范围内设置泛型

@functioninterface
接口MyInterface{
T修改(objectobj);
}


然后按如下方式使用:


检查这个问题:将lambda分解成一个方法,并使用一个方法引用。
MyInterface obj = new MyInterface(){
    @Override
    <T> T modify(Object obj){
        return (T) obj
    }
}
MyInterface obj -> {return (T) obj;};  // ! ERROR as T is undefined
MyInterface obj2 = o -> {return o;};