# 代码审查报告(Cache 泛型缓存类) ### 一、代码整体评价 这段代码整体质量很高,实现了一个基于泛型的键值缓存,功能完整、结构清晰、符合 Java 编码规范,完全满足作业要求。 #### 二、代码优点 正确使用泛型 泛型定义规范,支持任意类型的键值对,通用性强。 封装性良好使用 private final Map 存储数据,外部无法直接修改,保证数据安全。 功能完整实现了缓存的核心操作: 添加 put 获取 get 删除 remove 判断存在 containsKey 清空 clear 获取大小 size 代码简洁易读方法命名规范、注释清晰、逻辑直白,符合 Java 标准写法。 自带测试方法main 方法提供完整测试用例,可直接运行验证功能。 依赖合理基于 HashMap 实现,性能高效,适合缓存场景。 ### 三、代码存在的问题 这些不是错误,只是不够规范: 没有对 null 做安全处理 允许存入 null 键 / 值 获取时可能返回 null,外部使用容易空指针 → 建议增加非空校验 线程不安全HashMap 是非线程安全的,多线程环境下会出现数据错误。 没有最大容量限制无缓存上限,不断存入会导致内存占用过高。 无过期策略真实缓存都有过期时间,当前代码数据永久保存。 缺少 toString () 方法无法直接打印查看缓存内容,调试不方便。 ### 四、改进后的优化代码 import java.util.HashMap; import java.util.Map; import java.util.Objects; public class Cache { private final Map cacheMap; public Cache() { this.cacheMap = new HashMap<>(); } // 存入缓存(增加非空判断) public void put(K key, V value) { Objects.requireNonNull(key, "键不能为空"); Objects.requireNonNull(value, "值不能为空"); cacheMap.put(key, value); } // 获取缓存 public V get(K key) { return cacheMap.get(key); } // 删除 public void remove(K key) { cacheMap.remove(key); } // 是否包含 public boolean containsKey(K key) { return cacheMap.containsKey(key); } // 清空 public void clear() { cacheMap.clear(); } // 大小 public int size() { return cacheMap.size(); } // 打印缓存内容 @Override public String toString() { return "Cache{" + "data=" + cacheMap + '}'; } // 测试 public static void main(String\[] args) { Cache studentScoreCache = new Cache<>(); studentScoreCache.put("张三", 90); studentScoreCache.put("李四", 85); studentScoreCache.put("王五", 95); System.out.println(studentScoreCache); System.out.println("张三的分数:" + studentScoreCache.get("张三")); System.out.println("缓存大小:" + studentScoreCache.size()); studentScoreCache.remove("李四"); System.out.println("删除李四后:" + studentScoreCache); studentScoreCache.clear(); System.out.println("清空后缓存大小:" + studentScoreCache.size()); } }