我会用Map<Class<? extends T>, T>它来做它.
示例实现:
class SingleInstanceSet<T> {
Map<Class<? extends T>, T> map = new HashMap<Class<? extends T>, T>();
public boolean add(T o) {
if (map.containsKey(o.getClass()))
return false;
map.put((Class<? extends T>) o.getClass(), o);
return true;
}
public T get(Class<? extends T> klass) {
return map.get(klass);
}
}
Run Code Online (Sandbox Code Playgroud)
用法示例:
public static void main(String[] args) {
ClassSet<Object> instances = new ClassSet<Object>();
instances.add("hello");
instances.add(1234);
instances.add("will not be added");
System.out.println(instances.map);
}
Run Code Online (Sandbox Code Playgroud)
输出类似于:
{class java.lang.String=hello, class java.lang.Integer=1234}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
185 次 |
| 最近记录: |