【问题标题】:How to create lambda expression for functional interface having generic method [duplicate]如何为具有通用方法的功能接口创建 lambda 表达式
【发布时间】:2015-12-19 07:20:17
【问题描述】:

我有一个功能界面

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

我可以为这个接口创建匿名类

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

如何为此创建 lambda 表达式。

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

【问题讨论】:

标签: java generics lambda java-8


【解决方案1】:

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

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

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

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

然后按如下方式使用它:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-18
    • 1970-01-01
    • 2016-07-14
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    • 1970-01-01
    相关资源
    最近更新 更多