SuperAPI AI 工具集

guava-patterns

通用与其它

查看项目

更新于 10-15 21:48

技能介绍

用途:整理 Google Guava 的最佳实践模式,帮助在 Java 项目中正确选用 Guava 的集合、缓存、字符串与校验工具,并规避常见反模式。

主要能力:

  1. Immutable 集合三模式:of() 用于编译期已知元素作静态常量;copyOf() 用于接收外部集合时做防御性拷贝;builder() 用于渐进构建或合并多来源。资料指出 Collections.unmodifiableXXX 冗长、不安全且低效。
  2. Cache 选择决策:有统一“未命中→加载”函数用 LoadingCache;加载函数因 key 而异用 Cache;高频高并发追求性能用 Caffeine;多实例共享用 Redis。支持 refreshAfterWrite 异步刷新与 RemovalListener 异步拆除资源。
  3. Joiner/Splitter:实例不可变、线程安全,可作 static final 常量;支持 skipNulls、useForNull、trimResults、omitEmptyStrings、limit、withKeyValueSeparator、fixedLength 等链式组合。
  4. CharMatcher:预定义字符类操作,如 digit、javaIsoControl、whitespace、inRange,比正则更可读安全。
  5. Preconditions:checkArgument/checkNotNull/checkState,支持类似 printf 的格式化消息;简单判空可用 Objects.requireNonNull。
  6. CaseFormat:LOWER_CAMEL、UPPER_UNDERSCORE 等 ASCII 命名风格互转。

使用方式:按上述模式在代码中直接调用对应 API,例如用 CacheBuilder 构建 LoadingCache 并指定 maximumSize、expireAfterWrite 等参数。

适用场景:Java 项目中需要不可变集合、进程内缓存、字符串拼接切分、字符过滤与参数校验时。

限制与注意:ImmutableList.of() 不接受 null;Cache.get() 加载异常抛 ExecutionException,需 try-catch 或 getUnchecked();refreshAfterWrite 必须小于 expireAfterWrite;Guava 的 ListenableFuture 与 Reflect 已被 JDK 替代,Java 8+ 不建议再用;新项目缓存优先 Caffeine;CharMatcher 只匹配单个字符,多字符模式仍需正则。资料声明本技能不收集、存储或传输任何用户数据。