反射总结一
2012-03-01 13:35 党飞 阅读(269) 评论(0) 收藏 举报---------------------- android培训、java培训、期待与您交流! ----------------------
学了java反射机制,不得不总结一下:
下面通过一个小例子进行说明:
需求:定义一个存放Integer类型的ArrayList集合,怎样向集合中存入字符串、字符、Long类型、float类型、Double类型等非Integer类型数据。通过反射机制就可以解决这样的问题。
publicstaticvoid main(String[] args)throwsException{
ArrayList<Integer> list =newArrayList<Integer>();
list.add(12);//加入一个Integer类型数据
list.add(34);
//下面几种存入数据的方式是错误的
/*list.add(3L);//Long类型
list.add(3.4);//float
list.add(12.34);//Double
list.add('c');//char
list.add("xyz");//String
*/
//正确的做法可以通过反射机制存入一些非Integer类型数据
list.getClass().getMethod("add",Object.class).invoke(list,"abc");//加入字符串
list.getClass().getMethod("add",Object.class).invoke(list,'x');//存入字符
list.getClass().getMethod("add",Object.class).invoke(list,2L);//存入Long类型数据
list.getClass().getMethod("add",Object.class).invoke(list,4.5);//存入float类型数据
list.getClass().getMethod("add",Object.class).invoke(list,3.50);//存入Double类型数据
//方式一:通过迭代进行输出
Iterator iter = list.iterator();
while(iter.hasNext()){
System.out.println(iter.next());
}
//方式二:通过遍历输出
/*for(int x=0;x<list.size();x++){
System.out.println(list.get(x));
}*/
}
}
打印结果:
12
34
abc
x
2
4.5
3.5
可以看出,通过反射机制能够将一些非Integer类型的数据存入ArrayList<Integer>集合中去。
---------------------- android培训、java培训、期待与您交流! ----------------------
浙公网安备 33010602011771号