从Function <v,r =“”>使用compose()或andThen()时返回Object

时间:2016-09-28 20:05:49

标签: java wildcard functional-interface

为了测试函数接口函数的compose()和andThen()方法,我做了一个简单的代码:

public class Test {    
    public Trans testCompose() {
        return new T1().compose(new T2());
    }
}

interface Trans extends Function<File, File> {
}

class T1 implements Trans {
    @Override
    public File apply(File file) {
        return null;
    }
}

class T2 implements Trans {
    @Override
    public File apply(File file) {
        return null;
    }
}

但是你可以看到这段代码无法编译。 给定原因:没有类型变量(v)V的实例存在,因此函数符合Trans。

关于扩展名和超级通配符之间的差异multiple subjects我理解它们在列表中的使用,但不确定为什么它不能在这里编译。

有没有办法在方法testCompose()中继续返回对象Trans,还是必须返回一个Function来让代码编译?

1 个答案:

答案 0 :(得分:4)

不,这段代码不正确。 testCompose()返回的对象未实现Trans;它是一个匿名的lambda帮助器类型,不能转换为Trans

testCompose()方法应声明为返回Function<File, File>,因为这是唯一实现的接口。