private final LruCache<String, String> mLruCanonicalName = new LruCache<>(64);
public String getCanonicalName(Class<?> cls) {
if (cls == null) {
return null;
}
String canonicalName = mLruCanonicalName.get(cls.hashCode() + "");// 此处无需转成字符串,直接用 int 即可
if (canonicalName == null) {
canonicalName = cls.getCanonicalName();
if (TextUtils.isEmpty(canonicalName)) {
canonicalName = "Anonymous";
}
mLruCanonicalName.put(cls.hashCode() + "", canonicalName);
}
return canonicalName;
}
建议将 private final LruCache<String, String> mLruCanonicalName = new LruCache<>(64);
改为private final LruCache<Integer, String> mLruCanonicalName = new LruCache<>(64);,同时相关方法,去掉 + ""
举例如下
建议将
private final LruCache<String, String> mLruCanonicalName = new LruCache<>(64);
改为private final LruCache<Integer, String> mLruCanonicalName = new LruCache<>(64);
,同时相关方法,去掉+ ""