A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 虎牛龙马 中级黑马   /  2014-4-22 09:54  /  797 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public class GetGenericDemo {

  2.         Map<Integer,String> map = new HashMap<Integer,String>();
  3.         /**
  4.          * @param args
  5.          * @throws Exception
  6.          * @throws SecurityException
  7.          */
  8.         public static void main(String[] args) throws SecurityException, Exception {
  9.                
  10.                 Class<GetGenericDemo> c = GetGenericDemo.class;
  11.                 Field field = c.getDeclaredField("map");
  12.                 System.out.println(field);
  13.                 System.out.println(field.getName());
  14.                 Class<?> c1 = field.getType();
  15. java.util.Map
  16.                 System.out.println(c1);
  17.                
  18.                 /**
  19.                 * Type getGenericType() 返回一个Type 对象,它表示此Field 对象
  20.                 所表示字段的声明类型。
  21.                 * Type是Class的接口;
  22.                 */
  23.                 Type type = field.getGenericType();//包含泛型的类型
  24.                 //java.util.Map<java.lang.String, java.lang.Integer>
  25.                 System.out.println(type);

  26.                 ParameterizedType ptype = (ParameterizedType)type;
  27.                 Type[] types = ptype.getActualTypeArguments();
  28.                 for(Type t: types) {
  29.                         System.out.println(t);
  30.                 }
  31.                
  32.                 /**
  33.                 * Type[] getActualTypeArguments()
  34.                 返回表示此类型实际类型参数的Type对象的数组。
  35.                 Type getOwnerType()
  36.                 返回Type 对象,表示此类型是其成员之一的类型。
  37.                 Type getRawType()
  38.                 返回Type 对象,表示声明此类型的类或接口。
  39.                 */
  40. <font color="red">                Type t1 = ptype.getOwnerType();</font>
  41.                 Type t2 = ptype.getRawType();
  42.                
  43.                 System.out.println(t1);
  44.                 System.out.println(t2);
  45.         }
  46. }
复制代码
标红部分代码输出为null?但是此方法的解释是:返回Type 对象,表示此类型是其成员之一的类型。 照解释:输出应该是Ingeger或String才对啊!

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马