假设有如下类
class A
{
public void show(Vector<Integer> v) {}
}
在我们不知道Vector中数据的类型的时候 这时候我们只知道这个方法的名字 和参数的个数 ,我们来获取 范型化的实际类型 。
我们不可能通过 Vector对应的Class类来反射出 泛型集合中的类型 ,但是 我们却可以通过 这个方法所对应的Method类来实现 。
具体如下 :
import java.lang.reflect.Method;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.Vector;
public class Test3
{
public static void main(String []args) throws SecurityException, NoSuchMethodException
{
Method m=A.class.getMethod("show", Vector.class) ;//反射获得show方法的Method对象
Type[]t=m.getGenericParameterTypes() ; //获得范型参数的 一个Type数组 Type是Class类的基类
GenericArrayType,
ParameterizedType,
TypeVariable<D>,
WildcardType这些都是 实现Type的子接口
ParameterizedType p=(ParameterizedType)t[0]; //强制转换成Type的子接口 ParameterizedType类型 因为这个接口又可以获得范型化集合中元素的类型 System.out.println(p.getRawType()); //获得集合的类型
System.out.println(p.getActualTypeArguments()[0]); //获得集合中元素的类型
}
}
分享到:
相关推荐
范型List<T> Dictory<key,Value>增加事件功能 范型List<T> Dictory<key,Value>增加事件功能
第3版 机械工业出版社<br> 教学内容和要求<br>知识点 重要程度 使用频度 难度<br>Java 入门 高 中 易<br>变量和运算符 高 高 中<br>控制结构 高 高 易<br>数组 高 高 中<br>方法 很高 高 中<br>封装 很高 很高 难...
<br>在实际应用中,如果能够灵活应用范型和反射,那么该Java程序员可以设计出非常好的东西来,从而解决实际开发简化开发过程的目的。比如,在EJB 2.0开发客户端应用时,如果使用范型和反射,可以把EJB 2.0的标准使用...
java 带两个类型参数的泛型 java 带两个类型参数的泛型
自动装箱、拆箱<br>更优化的循环<br>可变长参数<br>枚举<br>静态引入<br>范型<br>Annotation(注解、注释)
C# List<T> 范型 对象列表<br>基于List<T>的Object ListView控件 <br>codeproject的开源代码<br>和datagridview一样的强
Java 范型Java 范型
java1.5范型编程指南.docjava1.5范型编程指南.docjava1.5范型编程指南.docjava1.5范型编程指南.docjava1.5范型编程指南.doc
JAVA范型指南:讲述范型,范型通配符,范型方法,范型与久代码(无范型)的融合,范型的擦除与翻译等...
java 泛型类的类型识别示例 java 泛型类的类型识别示例 java 泛型类的类型识别示例
Java范型机制 Java范型机制 Java范型机制 Java范型机制Java范型机制 Java范型机制
Java 范型攻略篇
主要介绍了Java使用反射来获取泛型信息,结合实例形式分析了java基于反射操作泛型信息的相关实现技巧与注意事项,需要的朋友可以参考下
内容同上个<br>解决AST输出时的一些bug<br>增加了几个语句的支持,<br>改进范型函数id的错误,<br>调用方法时未指示被调用表达式的错误
暂时仅仅设计了以下几个功能点: 1.点对点单人聊天; 2.多人在线同时聊天; 3.用户可以自由加入和退出系统; 4.具备用户在线状态监听;
//将布局做成一个view vi = LayoutInflater.from(MainActivity.this).inflate(R.layout.item3, null); //实例化控件 final ImageView iv = (ImageView) vi.findViewById(R.id.iv); final...
介绍获取方法的参数和返回值类型(包括Type和Class)获取泛型参数类型(包括对象的泛型参数或集合元素的泛型类型)方法首先我们定义一个类:public cla
本文通过举例,介绍了C++在如下三个方面中的一些关键的概念:C++的设计、C++程序设计以及C++语言的技术性内容。C++是一门部分的面向系统编程、通用目的的程序设计语言;它支持高效的低级运算、数据抽象、面向...<br>
Java 实现泛型List的源码,基本实现了List接口的全部所有方法。欢迎大家发表自己的观点和建议。
泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的好处是...