⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 typecounter.java

📁 看thinkinjava学习java时
💻 JAVA
字号:
package myutils;
import java.util.*;

public class TypeCounter extends HashMap<Class<?>,Integer> {
	private Class<?> baseType;
	public TypeCounter(Class<?> baseType){
		this.baseType = baseType;
	}
     public void count(Object obj){
    	 Class<?> type = obj.getClass();
    	 if(!baseType.isAssignableFrom(type)) 
    		 throw new RuntimeException(
    			 obj + " incorrect type:" + type + ". should be type or subtype of");
    	 countClass(type);
     }
	private void countClass(Class<?> type){
		Integer quantity = get(type);
		put(type, quantity == null ? 1 : quantity + 1);
		Class<?> superClass = type.getSuperclass();
		if(superClass != null && 
				baseType.isAssignableFrom(superClass));
		 countClass(superClass);
	}
	public String toString(){
		StringBuilder result = new StringBuilder("{");
		for(Map.Entry<Class<?>, Integer> pair : entrySet()){
			result.append(pair.getKey().getSimpleName());
			result.append("=");
			result.append(pair.getValue());
			result.append(", ");
			result.delete(result.length()-2, result.length());
			result.append("}");
		}
		return result.toString();
	}
	

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -