当前位置: 首页 > 后端技术 > Java

Java8什么时候使用@FunctionalInterface定义接口

时间:2023-04-01 21:23:12 Java

经常看到使用@FunctionalInterface定义的接口,那么在项目中什么时候定义这样的接口呢?假设我定义了一个名称服务接口。@FunctionalInterfacepublicinterfaceNameService{voidservice(Stringname);}现在的问题是我想在不同的场合打印不同的字符串,甚至还要加点装饰。比如我想把名字打印成大写,或者小写,或者加个“你好”。传统方式需要提供多个NameService的实现类,然后传递给testService()。有了FunctionalInterface,就可以减去实现类,直接传入函数。像这样:publicclassTestNameService{publicstaticvoidtestService(Listnames,NameServiceservice){for(Stringname:names){service.service(name);}}publicstaticvoidmain(String[]args){Listnames=newArrayList<>();names.add("java");名称.add("c");names.add("c++");testService(names,(target->System.out.println("hello:"+target)));testService(names,(target->System.out.println("hello:"+target.toLowerCase())));testService(names,(target->System.out.println("hello:"+target.toUpperCase())));}}}总结:什么时候需要定义函数式接口?我的理解和上面的场景类似,就是当你可能需要支持对特定数据的任何一种操作时,如果使用实现接口,你可能要实现很多接口,比较繁琐,但是你不用需要使用功能接口。