最近在项目中看到java8的新特性--函数式的接口使用
在网上查了一下:
函数式接口其实本质上还是一个接口,但是它是一种特殊的接口。
定义了这种类型的接口,使得以其为参数的方法,可以在调用时,使用一个lambda表达式作为参数。
接口使用@FunctionalInterface进行修饰
如:
定义一个函数接口
package
com.server.game.data.dataType;
@FunctionalInterface
public
interface
DataFactoryIF<T> {
public
T getT();
}
定义一个使用类
package
com.server.game.data.dataType;
import
org.codehaus.jackson.type.TypeReference;
public
class
GlobalDataType<T> {
private
final
DataFactoryIF<T> dataFactory;
GlobalDataType(DataFactoryIF<T> dataFactory){
this
.dataFactory = dataFactory;
}
public
T createNewObject(){
return
dataFactory.getT();
}
}
调用可以传入一个lambda式的参数:
GlobalDataType<Map<Long, Integer>>
test =
new
GlobalDataType<>(()->
new
HashMap<>());
Map<Long, Integer> map = test.createNewObject();