springBoot-番外篇(一)
Duration类
@FunctionalInterface
@FunctionalInterface 是 Java 中的一个注解,用于声明一个接口是一个函数式接口(Functional Interface)。函数式接口是指只包含一个抽象方法的接口。在 Java 8 中引入了函数式编程的特性,其中 lambda 表达式和方法引用是重要的概念。
使用 @FunctionalInterface 注解可以确保接口符合函数式接口的标准。这个注解是可选的,但它有助于提醒开发者保持接口的单一抽象方法的特性,以便在使用 lambda 表达式时能够正确地推断出目标类型。
如果一个接口被 @FunctionalInterface 注解修饰,且接口中包含不止一个抽象方法,编译器会产生一个编译错误,提醒开发者该接口不符合函数式接口的定义
匿名内部类
在获取监听器的时候下面这段代码
ArgumentResolver argumentResolver = ArgumentResolver.of(SpringApplication.class, this);
//ArgumentResolver.of解读
ArgumentResolver本身是一个函数式的接口
static <T> ArgumentResolver of(Class<T> type, T value) {
//() -> value 对于任何一个value类型的变量,只要使用这种写法得到的结果就是一个Java中一个供给型函数(Supplier),其返回值类型可以被推断为 Supplier<T>,其中 T 是 value 的类型。
return ofSupplied(type, () -> value);
}
static <T> ArgumentResolver ofSupplied(Class<T> type, Supplier<T> valueSupplier) {
return from(candidateType -> (candidateType.equals(type) ? valueSupplier.get() : null));
}
static ArgumentResolver from(Function<Class<?>, Object> function) {
//使用匿名内部类来new ArgumentResolver的实例返回
return new ArgumentResolver() {
@SuppressWarnings("unchecked")
@Override
public <T> T resolve(Class<T> type) {
return (T) function.apply(type);
}
};
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)