SALAH ABDULLAH阿山 3 weeks ago
parent
commit
fe537f73ae
  1. 0
      src/W88/Cache.java
  2. 0
      src/W88/GenericReflectionExample.java
  3. 0
      src/W88/Main.java
  4. 0
      src/W88/Pair.java
  5. 59
      src/w8/W88/Cache.java
  6. 53
      src/w8/W88/GenericReflectionExample.java
  7. 33
      src/w8/W88/Main.java
  8. 36
      src/w8/W88/Pair.java

0
src/W88/Cache.java

0
src/W88/GenericReflectionExample.java

0
src/W88/Main.java

0
src/W88/Pair.java

59
src/w8/W88/Cache.java

@ -0,0 +1,59 @@
package w8.W88;
import java.util.concurrent.ConcurrentHashMap;
public class Cache<K, V> {
private ConcurrentHashMap<K, V> cache;
private long defaultTTL;
public Cache() {
this.cache = new ConcurrentHashMap<>();
this.defaultTTL = 60000;
}
public Cache(long ttlMillis) {
this.cache = new ConcurrentHashMap<>();
this.defaultTTL = ttlMillis;
}
public void put(K key, V value) {
if (key == null) {
System.out.println("Error: Key cannot be null");
return;
}
cache.put(key, value);
System.out.println("Cache put: " + key + " = " + value);
}
public V get(K key) {
if (key == null) {
System.out.println("Error: Key cannot be null");
return null;
}
V value = cache.get(key);
if (value == null) {
System.out.println("Cache miss: " + key + " not found");
return null;
}
System.out.println("Cache hit: " + key + " = " + value);
return value;
}
public void remove(K key) {
cache.remove(key);
System.out.println("Cache removed: " + key);
}
public void clear() {
cache.clear();
System.out.println("Cache cleared");
}
public int size() {
return cache.size();
}
public boolean containsKey(K key) {
return cache.containsKey(key);
}
}

53
src/w8/W88/GenericReflectionExample.java

@ -0,0 +1,53 @@
package w8.W88;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
public class GenericReflectionExample {
public static void getGenericInfo() {
List<String> list = new ArrayList<String>() {};
Type type = list.getClass().getGenericSuperclass();
if (type instanceof ParameterizedType) {
ParameterizedType pt = (ParameterizedType) type;
Type[] actualTypes = pt.getActualTypeArguments();
for (Type t : actualTypes) {
System.out.println("Generic type: " + t.getTypeName());
}
}
}
public static void getFieldGenericInfo() throws NoSuchFieldException {
class MyClass {
public List<String> names;
}
Field field = MyClass.class.getField("names");
ParameterizedType type = (ParameterizedType) field.getGenericType();
Type[] types = type.getActualTypeArguments();
System.out.println("Field generic type: " + types[0].getTypeName());
}
public static void getMethodGenericInfo() throws NoSuchMethodException {
class MyClass {
public void process(List<Integer> numbers) {}
}
Method method = MyClass.class.getMethod("process", List.class);
Type[] paramTypes = method.getGenericParameterTypes();
ParameterizedType pt = (ParameterizedType) paramTypes[0];
System.out.println("Method parameter generic: " + pt.getActualTypeArguments()[0]);
}
public static void main(String[] args) throws Exception {
System.out.println("=== Reflection Generic Info ===");
getGenericInfo();
getFieldGenericInfo();
getMethodGenericInfo();
}
}

33
src/w8/W88/Main.java

@ -0,0 +1,33 @@
package w8.W88;
import w8.Cache;
import w8.Pair;
public class Main {
public static void main(String[] args) {
System.out.println("=== Pair Test ===");
Pair<String, Integer> pair = new Pair<>("age", 25);
System.out.println("Original: " + pair);
System.out.println("Swap: " + pair.swap());
System.out.println("\n=== Cache Test ===");
Cache<String, String> cache = new Cache<>(3000);
cache.put("name", "Ahmed");
cache.put("city", "Cairo");
System.out.println("\n=== Get Values ===");
System.out.println("Get name: " + cache.get("name"));
System.out.println("Get city: " + cache.get("city"));
System.out.println("Get country: " + cache.get("country"));
System.out.println("\n=== Remove ===");
cache.remove("city");
System.out.println("Get city after remove: " + cache.get("city"));
System.out.println("\n=== Size ===");
System.out.println("Cache size: " + cache.size());
cache.clear();
System.out.println("After clear, size: " + cache.size());
}
}

36
src/w8/W88/Pair.java

@ -0,0 +1,36 @@
package w8.W88;
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;
}
public void setKey(K key) {
this.key = key;
}
public void setValue(V value) {
this.value = value;
}
public Pair<V, K> swap() {
return new Pair<>(value, key);
}
@Override
public String toString() {
return "Pair{" + key + ", " + value + "}";
}
}
Loading…
Cancel
Save