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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© H._张_♂ 中级黑马   /  2014-3-31 18:40  /  799 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

下面的代码中有这样一句代码,
                ParameterizedType pType = (ParameterizedType)types[0];

这句代码中的ParameterizedType 是一个接口,为什么可以直接定义pType这个变量?

下面代码也是老师讲的通过反射得到集合泛型中的实际类型。有兴趣可以看看

  1. package com.itheima.day1;

  2. import java.lang.reflect.Method;
  3. import java.lang.reflect.ParameterizedType;
  4. import java.lang.reflect.Type;
  5. import java.sql.Date;
  6. import java.util.List;


  7. public class ReflectFX {

  8.         public static void main(String[] args) throws Exception {
  9.                
  10.                 //通过反射得到一个使用过集合的方法
  11.                 Method refleMethod = ReflectFX.class.getMethod("applyVector", List.class);
  12.                
  13.                 //通过方法的getGenericParameter,Types按照声明顺序返回 Type 对象的数组,这些对象描述了此 Method 对象所表示的方法的形参类型的。法
  14.                 Type[] types = refleMethod.getGenericParameterTypes();
  15.                
  16.                 //ParameterizedType 表示参数化类型,不过明明是接口为什么能使用强制转换?
  17.                 ParameterizedType pType = (ParameterizedType)types[0];
  18.                
  19.                 //getActualTypeArguments() 返回表示此类型实际类型参数的 Type 对象的数组。
  20.                 System.out.println(pType.getActualTypeArguments()[0]);
  21.         }

  22.         public static <T> void applyVector(List<Date> v1){
  23.                
  24.         }
  25. }
复制代码

1 个回复

倒序浏览
不能,ParameterizedType pType = (ParameterizedType)types[0];这里的ParameterizedType 被当做是一个类
使用interface来定义一个接口。接口定义同类的定义类似,也是分为接口的声明和接口体,其中接口体由常量定义和方法定义两部分组成。定义接口的基本格式如下:

[修饰符] interface 接口名 [extends 父接口名列表]{

[public] [static] [final] 常量;
[public] [abstract] 方法;
}
与Java的类文件一样,接口文件的文件名必须与接口名相同。
实现接口
接口在定义后,就可以在类中实现该接口。在类中实现接口可以使用关键字implements,其基本格式如下:
[修饰符] class <类名> [extends 父类名] [implements 接口列表]{
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马