| 接口 | 说明 |
|---|---|
| Func |
lambda 函数工具箱,主要用来解决 JDK 函数接口参数过少的问题,同时还降低了学习成本
JDK java.util.function 包里面的函数接口有如下缺点:
1:设计繁琐,相比动态语言的闭包在理解和学习成本上要高
2:函数支持的参数过少,超过两个参数时就没法使用了
3:基于 java 接口的闭包实现方案,转移了用户对于函数本身这个核心要点的关注,
接口名、方法名带来了噪声干扰
|
| Func.F00 |
0 参 0 返回函数
|
| Func.F01<R> |
0 参 1 返回函数
|
| Func.F10<T> |
1 参 0 返回函数
|
| Func.F11<T,R> |
1 参 1 返回函数
|
| Func.F20<T,U> |
2 参 0 返回函数
|
| Func.F21<T,U,R> |
2 参 1 返回函数
|
| Func.F30<T,U,V> |
3 参 0 返回函数
|
| Func.F31<T,U,V,R> |
3 参 1 返回函数
|
| Func.F40<T,U,V,W> |
4 参 0 返回函数
|
| Func.F41<T,U,V,W,R> |
4 参 1 返回函数
|
| Func.F50<T,U,V,W,X> |
5 参 0 返回函数
|
| Func.F51<T,U,V,W,X,R> |
5 参 1 返回函数
|
| Func.F60<T,U,V,W,X,Y> |
6 参 0 返回函数
|
| Func.F61<T,U,V,W,X,Y,R> |
6 参 1 返回函数
|
| Func.F70<T,U,V,W,X,Y,Z> |
7 参 0 返回函数
|
| Func.F71<T,U,V,W,X,Y,Z,R> |
7 参 1 返回函数
|
| 类 | 说明 |
|---|---|
| ElKit |
EL 表达式语言求值工具类
1:不带参示例
Integer value = ElKit.eval("1 + 2 * 3");
2:带参示例
Kv data = Kv.of("a", 2).set("b", 3);
Integer value = ElKit.eval("1 + a * b", data);
|
| ElKit.InnerEvalDirective | |
| HashKit | |
| JavaKeyword |
JavaKeyword.
|
| Kv |
Kv (Key Value)
Example:
Kv para = Kv.of("id", 123);
User user = user.findFirst(getSqlPara("find", para));
|
| Okv |
Okv (Ordered Key Value)
Okv 与 Kv 的唯一区别在于 Okv 继承自 LinkedHashMap,而 Kv 继承自 HashMap
所以对 Okv 中的数据进行迭代输出的次序与数据插入的先后次序一致
Example:
Okv para = Okv.of("id", 123);
User user = user.findFirst(getSqlPara("find", para));
|
| Prop |
Prop.
|
| PropKit |
PropKit.
|
| ReflectKit |
反射工具类
|
| StrKit |
StrKit.
|
| SyncWriteMap<K,V> |
SyncWriteMap 同步写 HashMap
创建原因是 HashMap扩容时,遇到并发修改可能造成 100% CPU 占用
SyncWriteMap 拥有 HashMap 的性能,但不保障并发访问的线程安全
只用于读多写少且不用保障线程安全的场景
例如 MethodKit 中用于缓存 MethodInfo 的 cache,被写入的数据
不用保障是单例,读取之后会做 null 值判断
ActionMapping 中的 HashMap 是系统启动时在独立线程内初始化的,
不存在并发写,只存在并发读的情况,所以仍然可以使用 HashMap
|
| TimeKit |
TimeKit 用于简化 JDK 8 新增的时间 API
新旧日期转换通过桥梁 Instant 进行,转成 LocalDate、LocalTime 需要先转成 LocalDateTime:
新转旧:LocalDateTime.atZone(ZoneId).toInstant() -> Instant -> Date.from(Instant)
旧转新:Date.toInstant() -> Instant -> LocalDateTime.ofInstant(Instant, ZoneId)
经测试,SimpleDateFormat 比 DateTimeFormatter 对 pattern 的支持更好
对于同样的 pattern 值 "yyyy-MM-dd HH:mm:ss",前者可以转换 "2020-06-9 12:13:19"
后者却不支持,原因是 pattern 的 dd 位置只有数字 9,必须要是两位数字才能支持
所以:建议优先使用转换结果为 Date 的 parse 方法,使用 SimpleDateFormat 来转换
|
| TypeKit |
TypeKit
|
Copyright © 2024. All rights reserved.