标签:
在java中如果要使用lambda表达式需要借助实现FunctionalInterface这个注解的接口(函数式接口),所有的lambda表达式会被认为是函数式接口的实现类。
StringFunction就是一个函数式接口,注意:它带有FunctionalInterface注解
/** * Created by sxg on 2016/4/23. */ @FunctionalInterface public interface StringFunction<T> { T apply(String s); }
/** * Created by sxg on 2016/4/23. */ public class ParseString { private String name; public ParseString(String name){ this.name = name; } public <T> T getParseString(StringFunction<T> action){ return action.apply(name); } }
/** * Created by sxg on 2016/4/23. */ public class ReturnStringTest { public static void main(String[] args) { ParseString p = new ParseString("hello"); String result = p.getParseString(s -> (s + " china!")); System.out.println(result); } }
ParseString类的getParseString的入参是一个函数式接口类型,所以支持lambda表达式(可以理解为函数式接口的实现类)。
lambda表达式的定义需要符合T apply(String s)类型模式,入参为String(这里是编译器类型推导),出参为泛型T。
标签:
原文地址:http://www.cnblogs.com/sxg2012/p/5424416.html