我正在玩未来的Java 8版本,即JDK 1.8。
我发现你可以很容易地做到
interface Foo { int method(); }
并像
一样使用它Foo foo = () -> 3;
System.out.println("foo.method(); = " + foo.method());
只打印3。
我还发现有一个java.util.function.Function接口以更通用的方式执行此操作。但是这段代码不会编译
Function times3 = (Integer triple) -> 3 * triple;
Integer twelve = times3.map(4);
似乎我首先必须做类似
的事情interface IntIntFunction extends Function<Integer, Integer> {}
IntIntFunction times3 = (Integer triple) -> 3 * triple;
Integer twelve = times3.map(4);
所以我想知道是否有另一种方法可以避免IntIntFunction步骤?
答案 0 :(得分:5)
@joop和@edwin谢谢。
基于最新版本的JDK 8,应该这样做。
IntFunction<Integer> times3 = (Integer triple) -> 3 * triple;
如果您不喜欢,可以使用
之类的内容使其更加流畅IntFunction times3 = triple -> 3 * (Integer) triple;
因此,您无需指定类型或括号,但在访问时需要强制转换参数。