Browse Source

完成Pair<K,V>及其swap方法

main^2
baihuijuan 1 month ago
parent
commit
d5950341dd
  1. 5
      w8/AI
  2. 26
      w8/Cache.java
  3. 23
      w8/Pair.java

5
w8/AI

@ -0,0 +1,5 @@
3.AI协同学习:泛型擦除后如何通过反射获取泛型信息?
答案:擦除后,运行时拿不到类型参数k、V的实际值。但可以通过反射获取字段、方法参数/返回值上声明的泛型信息(如List<String>中的String)
4.思考题:为什么Java泛型不支持基本类型?
根本原因:Java泛型通过类型擦除实现,编译后所有泛型参数都被替换为Object(或上界类型)。而基本类型(int、double等)不继承自 object,无法直接放入0bject容器中。
解法:使用对应的包装类(Integer Double).依赖自动装箱/拆箱

26
w8/Cache.java

@ -0,0 +1,26 @@
import java.util.HashMap;
import java.util.Map;
public class Cache<K, V> {
private final Map<K, V> cache = new HashMap<>();
public void put(K key, V value) {
cache.put(key, value);
}
public V get(K key) {
return cache.get(key);
}
public boolean containsKey(K key) {
return cache.containsKey(key);
}
public int size() {
return cache.size();
}
public void clear() {
cache.clear();
}
}

23
w8/Pair.java

@ -0,0 +1,23 @@
public class Pair<K, V> {
private K key;
private V value;
public Pair(K key, V value) {
this.key = key;
this.value = value;
}
public K getKey() { return key; }
public V getValue() { return value; }
// 交换后 key/value 类型可能变化,所以返回新的 Pair<V, K>
public Pair<V, K> swap() {
return new Pair<>(this.value, this.key);
}
public static void main(String[] args) {
Pair<String, Integer> p = new Pair<>("Age", 25);
Pair<Integer, String> swapped = p.swap();
System.out.println(swapped.getKey() + "=" + swapped.getValue()); // 25=Age
}
}
Loading…
Cancel
Save