java5核心基础泛型(2):泛型在反射中的应用
来源:互联网 发布:fabs在c语言中用法 编辑:程序博客网 时间:2024/04/29 04:16
如何通过反射获取指定参数类型的构造函数?
贴代码如下:
package highBasic.generic;/** * 泛型入门 */import java.lang.reflect.Constructor;import java.lang.reflect.Method;import java.util.ArrayList;import java.util.Collection;public class GenericTest {public static void main(String[] args) throws Exception{ArrayList collection =new ArrayList();//在list中添加元素collection.add(1);collection.add(1L);collection.add("abc");int i=(Integer)collection.get(0);//int i1=(Integer)collection.get(1);//----出现异常的语句ArrayList<String> collection2 =new ArrayList<String>();//在list中添加元素//collection2.add(1);////collection2.add(1L);//----编译器报错了,原由是这时候规定了只能存储string对象collection2.add("abc");String element=collection2.get(0);System.out.println(element);//-----泛型在==反射==中的应用:通过反射获取指定类型的构造函数---------------1 Constructor<String> constructor=String.class.getConstructor(StringBuffer.class);//通过泛型限定以后,就能够知道这个对象肯定是String类型的构造方法,如果不用泛型出现的结果//和上面定义集合对象的时候是类似的。String string2=constructor.newInstance(new StringBuffer("abc"));System.out.println(string2.charAt(0));/* * 总结:那么到底在哪些地方可以用泛型? * 我们可以查阅技术文档,看类型的定义,如果是类似于 Object<T>这种形式就是可以用泛型的。 *///----泛型是在编译器阶段起作用的,解决了运行时候可能出现的异常。ArrayList<Integer> collection3=new ArrayList<Integer>();//如果想等说明collection2和collection3指向的是同一份字节码。System.out.println(collection2.getClass()==collection.getClass());//打印的结果是true//-------是否可以透过编译器给collection3中添加String对象呢?------------------------------------//collection3.add("abc");------报错Method method=collection3.getClass().getMethod("add",Object.class );method.invoke(collection3, "abc");System.out.println("透过编译器,将String对象传到Integer类型的集合对象中,输出结果:"+collection3.get(0));//输出:“透过编译器,将String对象传到Integer类型的集合对象中,输出结果:abc”//说明以上做法实现了。//那么问题是这样的做法有什么用途----------------------------?}}
上述1注释以下的code:利用反射机制获取了参数为StringBuffer类型的String类的构造函数 constructor,然后通过constructor的newInstance()方法传入StringBuffer类型的参数创建了String对象。最后将String对象 string2的引用指向它。
以上代码就成功的通过反射方式获取了指定参数类型的String类的构造函数。
1 0
- java5核心基础泛型(2):泛型在反射中的应用
- java5核心基础之泛型(1)
- 反射在泛型中的应用
- Java基础加强-java5的泛型
- java5核心基础之泛型(3)-泛型作用于编译阶段-如何将String对象传入Integer类型的泛型对象中?
- java5-泛型通配符
- java 高新技术【9.2】 泛型类以及反射在泛型中的应用
- java 高新技术【9.2】 泛型类以及反射在泛型中的应用
- C#基础系列:实现自己的ORM(反射以及Attribute在ORM中的应用)
- java--加强之 Java5的泛型
- Java-Java5.0泛型解读
- 黑马程序员——基础加强之 Java5的泛型
- 反射在Java中的应用
- 反射在android中的应用
- Java反射泛型应用
- 黑马程序员 java高新技术<三>--java5的注解、java5的泛型
- (7)java5线程并发库的应用(线程池) 以及在实际项目中的使用。。
- 泛型在.NET中的应用
- 项目进阶 之 集群环境搭建(三)多管理节点MySQL集群
- Linux(CentOS)安装apache(httpd),其他电脑无法访问的原因 【iptables打开某端口】
- Remove Element
- Timus 1796. Amusement Park 聪明题
- AC自动机算法
- java5核心基础泛型(2):泛型在反射中的应用
- Feature And Refactoring
- 【JavaScript】Pseudo-classical模式
- 关于img的href和src取变量的方法
- python新手常犯错误
- html中div不自动换行、强制不换行的具体实现
- iOS6新特征:UICollectionView介绍
- UVa 10392 - Factoring Large Numbers
- Java程序挂掉的几种可能