Browse Source

上传文件至 'w8'

main
LiuZihan 2 months ago
parent
commit
422820bcce
  1. 75
      w8/Cache.java
  2. 37
      w8/GenericReflectionDemo.java
  3. 33
      w8/Pair.java

75
w8/Cache.java

@ -0,0 +1,75 @@
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.locks.ReentrantReadWriteLock;
public class Cache<K, V> {
private final Map<K, V> store = new HashMap<>();
private final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
public void put(K key, V value) {
if (key == null || value == null)
throw new IllegalArgumentException("Key and value must not be null");
lock.writeLock().lock();
try {
store.put(key, value);
} finally {
lock.writeLock().unlock();
}
}
public V get(K key) {
lock.readLock().lock();
try {
return store.get(key);
} finally {
lock.readLock().unlock();
}
}
public boolean containsKey(K key) {
lock.readLock().lock();
try {
return store.containsKey(key);
} finally {
lock.readLock().unlock();
}
}
public V remove(K key) {
lock.writeLock().lock();
try {
return store.remove(key);
} finally {
lock.writeLock().unlock();
}
}
public void clear() {
lock.writeLock().lock();
try {
store.clear();
} finally {
lock.writeLock().unlock();
}
}
public int size() {
lock.readLock().lock();
try {
return store.size();
} finally {
lock.readLock().unlock();
}
}
public static void main(String[] args) {
Cache<String, Integer> cache = new Cache<>();
cache.put("one", 1);
cache.put("two", 2);
System.out.println(cache.get("one"));
System.out.println(cache.get("two"));
cache.remove("one");
System.out.println(cache.containsKey("one"));
System.out.println("Cache size: " + cache.size());
}
}

37
w8/GenericReflectionDemo.java

@ -0,0 +1,37 @@
import java.lang.reflect.*;
import java.util.*;
public class GenericReflectionDemo {
private Map<String, List<Integer>> complexField;
public List<Double> process(Map<String, ? extends Number> map, int value) {
return new ArrayList<>();
}
public static void main(String[] args) throws NoSuchFieldException, NoSuchMethodException {
Field field = GenericReflectionDemo.class.getDeclaredField("complexField");
Type genericType = field.getGenericType();
System.out.println("===== 字段泛型信息 =====");
if (genericType instanceof ParameterizedType) {
ParameterizedType pt = (ParameterizedType) genericType;
System.out.println("原始类型: " + pt.getRawType());
System.out.println("键的类型: " + pt.getActualTypeArguments()[0]);
System.out.println("值的类型: " + pt.getActualTypeArguments()[1]);
}
Method method = GenericReflectionDemo.class.getDeclaredMethod("process", Map.class, int.class);
Type returnType = method.getGenericReturnType();
System.out.println("\n===== 方法返回类型泛型 =====");
System.out.println("返回类型: " + returnType);
Type[] paramTypes = method.getGenericParameterTypes();
System.out.println("\n===== 方法参数泛型 =====");
for (Type param : paramTypes) {
System.out.println("参数类型: " + param);
if (param instanceof ParameterizedType) {
ParameterizedType ppt = (ParameterizedType) param;
System.out.println(" -> 实际类型参数: " + Arrays.toString(ppt.getActualTypeArguments()));
}
}
}
}

33
w8/Pair.java

@ -0,0 +1,33 @@
public class Pair<K, V> {
private final K key;
private final V value;
public Pair(K key, V value) {
this.key = key;
this.value = value;
}
public K getKey() {
return key;
}
public V getValue() {
return value;
}
public Pair<V, K> swap() {
return new Pair<>(this.value, this.key);
}
@Override
public String toString() {
return "Pair{" + key + " -> " + value + "}";
}
public static void main(String[] args) {
Pair<String, Integer> p1 = new Pair<>("age", 25);
System.out.println("原始: " + p1);
Pair<Integer, String> p2 = p1.swap();
System.out.println("交换后: " + p2);
}
}
Loading…
Cancel
Save