package org.test4j.tools.generic; import java.lang.reflect.Type; import java.lang.reflect.TypeVariable; import java.util.HashMap; import java.util.Map; /** * 泛型变量列表 * * @author darui.wudr 2013-10-30 上午11:31:47 */ @SuppressWarnings("rawtypes") public class GenericTypeMap extends HashMap<GenericTypeKey, Type> { private static final long serialVersionUID = -8181224276624369854L; @Override public String toString() { StringBuilder buff = new StringBuilder(); for (Map.Entry<GenericTypeKey, Type> entry : this.entrySet()) { buff.append(entry.getKey()).append(" : ").append(entry.getValue()).append("\n"); } return buff.toString(); } public void putType(TypeVariable var, Type value) { this.put(new GenericTypeKey(var), value); } public void putType(Class genericDeclare, String genericName, Type type) { this.put(new GenericTypeKey(genericDeclare, genericName), type); } public void putGeneric(TypeVariable var, TypeVariable value) { Type type = this.getType(value); this.put(new GenericTypeKey(var), type == null ? value : type); } public void putGeneric(TypeVariable arg) { Type type = this.getType(arg); if (type != null) { this.put(new GenericTypeKey(arg), type); } } public Type getType(TypeVariable value) { return this.get(new GenericTypeKey(value)); } public Type getType(String genericDeclare, String genericName) { return this.get(new GenericTypeKey(genericDeclare, genericName)); } public Type getType(Class genericDeclare, String genericName) { return this.get(new GenericTypeKey(genericDeclare, genericName)); } }