lambda表达式(1)

在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。
posted @ 2016-04-23 13:06  乘风破浪sxg  阅读(164)  评论(0编辑  收藏  举报