@FunctionalInterface 是 Java 中的一个注解,标识某个接口是一个函数式接口(Functional Interface)。函数式接口是指仅包含一个抽象方法的接口。该注解主要用于明确说明该接口是用于函数式编程的,并提供编译时的检查。
那么如何自定义一个函数接口,然有有多个实现。话不多说直接上代码~
1、创建一个实体UserViewTestModel
@Getter
@Setter
@AllArgsConstructor
public class UserTestModel {
private Long id;
private String username;
}
2、自定义一个函数接口
@FunctionalInterface
public interface UserConsumer {
void consume(UserTestModel data);
}
3、创建多个接口实现TestF1、TestF2 。。。本测试只创建2个,想要更多,自行参照创建。
@Component
public class TestF1 implements UserConsumer{
@Override
public void consume(UserTestModel data) {
System.out.println("TestF1==="+ JSONUtil.toJsonStr(data));
}
}
@Component
public class TestF2 implements UserConsumer{
@Override
public void consume(UserTestModel data) {
System.out.println("TestF2----"+ JSONUtil.toJsonStr(data));
}
}
4、调用
@RestController
@RequestMapping("/test")
public class TestController {
private final List<UserConsumer> consumerList;
public TestController(List<UserConsumer> consumerList) {
this.consumerList = consumerList;
}
@PostMapping("/func")
public void func() {
UserTestModel user = new UserTestModel(1L, "pack");
consumerList.forEach(t -> t.consume(user));
}
}
结果输出
TestF1==={"id":1,"username":"pack"}
TestF2----{"id":1,"username":"pack"}
1122

被折叠的 条评论
为什么被折叠?



