作家
登录

Java反射机制应用实践

作者: 来源: 2017-05-18 08:56:25 阅读 我要评论

  1. public class TypeCounter extends HashMap<Class<?>, Integer> { 
  2.     private Class<?> baseType; 
  3.  
  4.     public TypeCounter(Class<?> baseType) { 
  5.         this.baseType = baseType; 
  6.     } 
  7.  
  8.     public void count(Object obj) { 
  9.         Class<?> type = obj.getClass(); 
  10.         if (!baseType.isAssignableFrom(type)) { 
  11.             throw new RuntimeException( 
  12.                 obj + " incorrect type " + type + ", should be type or subtype of " + baseType); 
  13.         } 
  14.         countClass(type); 
  15.     } 
  16.  
  17.     private void countClass(Class<?> type) { 
  18.         Integer quantity = get(type); 
  19.         put(type, quantity == null ? 1 : quantity + 1); 
  20.         Class<?> superClass = type.getSuperclass(); 
  21.         if (superClass != null && baseType.isAssignableFrom(superClass)) { 
  22.             countClass(superClass); 
  23.         } 
  24.     } 
  25.  
  26.     @Override 
  27.     public String toString() { 
  28.         StringBuilder result = new StringBuilder("{"); 
  29.  
  30.         for (Map.Entry<Class<?>, Integer> pair : entrySet()) { 
  31.             result.append(pair.getKey().getSimpleName()); 
  32.             result.append("="); 
  33.             result.append(pair.getValue()); 
  34.             result.append(", "); 
  35.         } 
  36.  
  37.         result.delete(result.length() - 2, result.length()); 
  38.         result.append(

      推荐阅读

      Linux性能分析工具汇总合集

    常见用法: netstat &ndash;npl 可以查看你要打开的端口是否已经打开。 netstat &ndash;rn 打印路由表信息。 netstat &ndash;in 供给体系上的接口信息,打印每个接口的MTU,输入分>>>详细阅读


    本文标题:Java反射机制应用实践

    地址:http://www.17bianji.com/lsqh/35285.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)