本文共 1267 字,大约阅读时间需要 4 分钟。
protected static class StrictMapextends HashMap {}
public V put(String key, V value) { if (containsKey(key)) { //key: com.kq.mybatis.mapper.AccountMapper.getAccountList 完整的key,如果重复就会报错 throw new IllegalArgumentException(name + " already contains value for " + key + (conflictMessageProducer == null ? "" : conflictMessageProducer.apply(super.get(key), value))); } if (key.contains(".")) { final String shortKey = getShortName(key); // getAccountList if (super.get(shortKey) == null) { super.put(shortKey, value); } else { super.put(shortKey, (V) new Ambiguity(shortKey)); //shortKey有可能会重复的,重复就放Ambiguity } } return super.put(key, value); }
@Override public V get(Object key) { V value = super.get(key); // 根据key取,取不到报错 if (value == null) { throw new IllegalArgumentException(name + " does not contain value for " + key); } if (value instanceof Ambiguity) { // 如果类型是Ambiguity,则报错 throw new IllegalArgumentException(((Ambiguity) value).getSubject() + " is ambiguous in " + name + " (try using the full name including the namespace, or rename one of the entries)"); } return value; }
转载地址:http://dexwb.baihongyu.com/