From 4660766d081faec079635c694b270e81eb97b173 Mon Sep 17 00:00:00 2001 From: Songrui <1778280163@qq.com> Date: Thu, 30 Apr 2026 14:30:51 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8B=E7=91=9E-202506050301?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- w8/Pair.java | 40 ++++++++++++++++++++++++++++++++++++++++ w8/PairTest.java | 16 ++++++++++++++++ w8/ReadMe.md | 30 ++++++++++++++++++++++++++++++ 3 files changed, 86 insertions(+) create mode 100644 w8/Pair.java create mode 100644 w8/PairTest.java create mode 100644 w8/ReadMe.md diff --git a/w8/Pair.java b/w8/Pair.java new file mode 100644 index 0000000..8d5e303 --- /dev/null +++ b/w8/Pair.java @@ -0,0 +1,40 @@ +// 泛型键值对类 Pair +public class Pair { + // 私有成员变量 + private final K key; + private final V value; + + // 构造方法 + public Pair(K key, V value) { + this.key = key; + this.value = value; + } + + // getter 方法 + public K getKey() { + return key; + } + + public V getValue() { + return value; + } + + /** + * 静态泛型方法:交换键值 + * 传入 Pair,返回 交换后的 Pair + */ + public static Pair swap(Pair pair) { + // 空值防护 + if (pair == null) { + return null; + } + // 新对象:把原值当key,原key当value + return new Pair<>(pair.getValue(), pair.getKey()); + } + + // 重写toString,方便打印 + @Override + public String toString() { + return "[" + key + ", " + value + "]"; + } +} \ No newline at end of file diff --git a/w8/PairTest.java b/w8/PairTest.java new file mode 100644 index 0000000..bf918cc --- /dev/null +++ b/w8/PairTest.java @@ -0,0 +1,16 @@ +public class PairTest { + public static void main(String[] args) { + // 1. 创建原始 Pair + Pair p1 = new Pair<>("身高", 180); + System.out.println("交换前:" + p1); + + // 2. 调用静态swap方法交换键值 + Pair p2 = Pair.swap(p1); + System.out.println("交换后:" + p2); + + // 再测试一组 + Pair p3 = new Pair<>(10, 99.5); + Pair p4 = Pair.swap(p3); + System.out.println("另一组交换:" + p4); + } +} diff --git a/w8/ReadMe.md b/w8/ReadMe.md new file mode 100644 index 0000000..5cb7394 --- /dev/null +++ b/w8/ReadMe.md @@ -0,0 +1,30 @@ +对话主题 +Java 泛型类 Pair 设计、编写,以及实现静态 swap 交换键值方法 +交互时间线 & 完整对话内容 +1. 用户提问 + 设计泛型类 Pair,怎么设计,具体应该怎么做 +2. AI 回复 + 讲解泛型类 Pair 设计思路: + 泛型类语法 public class Pair + 定义私有泛型成员变量 key、value + 提供构造方法、getter 方法 + 给出完整可运行 Pair 基础版代码 + 提供测试类演示不同类型 Pair 的使用 +3. 用户接着提问 + 如何让实现一个静态方法,交换 Pair 的键和值 +4. AI 回复 + 讲解静态泛型 swap 方法核心原理: + 静态方法需单独声明泛型 + 接收 Pair,返回反转类型 Pair + 编写带静态 swap 方法的增强版 Pair 类 + 给出测试代码,演示键值互换效果 + 解释为什么不能用类上的 K、V,必须方法自定义泛型 +5. 用户指令 + 完成 Pair 及其 swap 方法 +6. AI 最终交付 + 给出最终完整版不可变 Pair 完整代码 + 测试类代码: + 私有 final 成员变量 + 构造方法、getter + 静态泛型 swap 方法(做空判断、返回新交换对象) + 重写 toString + 配套测试类,多组类型测试交换效果