黑马程序员技术交流社区
标题:
关于反射
[打印本页]
作者:
zl78365336
时间:
2013-12-3 13:43
标题:
关于反射
本帖最后由 zl78365336 于 2013-12-3 14:13 编辑
为何这个不可以
java.lang.Integer cannot be cast to java.lang.String
ArrayList<Integer> list=new ArrayList<Integer>();
Method method=list.getClass().getMethod("add",Object.class);
String str= "添加字符串!"; //创建字符串
method.invoke(list, str); //在list上调用add方法,用反射技术
ArrayList<String> list=new ArrayList<String>();
Method method=list.getClass().getMethod("add",Object.class);
Integer i= new Integer(5);
method.invoke(list, i); //在list上调用add方法,用反射技术
复制代码
作者:
FFF
时间:
2013-12-3 14:06
同学、问题已经解决了吗?
如果没有、就去新版28期问吧,26~27已经结束了。开班了!
http://bbs.itheima.com/forum-165-1.html
如果问题已经解决,请及时修改主题为“提问结束”。
修改主题的方法链接
http://bbs.itheima.com/thread-89313-1-1.html
如果没有解决,可能你的问题问得不够清楚。可以重新发问的哦~
作者:
明月几时有
时间:
2013-12-3 23:02
为何这个不可以
java.lang.Integer cannot be cast to java.lang.String
ArrayList<Integer> list=new ArrayList<Integer>();//你这里加了Integer的泛型
Method method=list.getClass().getMethod("add",Object.class);//这里最好写Integer.class
String str= "添加字符串!"; //创建字符串
method.invoke(list, str); //在list上调用add方法,用反射技术 这里却又添加字符串当然不行
ArrayList<String> list=new ArrayList<String>(); //同理,这里规定了String类型的泛型
Method method=list.getClass().getMethod("add",Object.class);
Integer i= new Integer(5); //这里却又添加Integer类型,这不是张冠李戴吗
method.invoke(list, i); //在list上调用add方法,用反射技术
复制代码
作者:
王家胜
时间:
2013-12-4 14:59
class StringTest
{
public static void main(String[] args) throws Exception
{
ArrayList<Integer> list1=new ArrayList<Integer>();
Class cl=list1.getClass();
Method me=cl.getMethod("add", Object.class);
me.invoke(list1, "hello");
System.out.println(list1.get(0));
ArrayList<String> list2=new ArrayList<String>();
Method method=list2.getClass().getMethod("add",Object.class);
Integer i= new Integer(5);
method.invoke(list2, i); //在list上调用add方法,用反射技术
Object str=list2.get(0);
String strf=String.valueOf(str);
System.out.println(strf);
}
}
那是Object类型的自动转换会报错,你要手动转换
Object str=list2.get(0);
String strf=String.valueOf(str);
System.out.println(strf);
用Object接受然后在用String.valueOf(Object obj)进行转换
作者:
王家胜
时间:
2013-12-4 15:00
class StringTest
{
public static void main(String[] args) throws Exception
{
ArrayList<Integer> list1=new ArrayList<Integer>();
Class cl=list1.getClass();
Method me=cl.getMethod("add", Object.class);
me.invoke(list1, "hello");
System.out.println(list1.get(0));
ArrayList<String> list2=new ArrayList<String>();
Method method=list2.getClass().getMethod("add",Object.class);
Integer i= new Integer(5);
method.invoke(list2, i); //在list上调用add方法,用反射技术
Object str=list2.get(0);
String strf=String.valueOf(str);
System.out.println(strf);
}
}
复制代码
那是Object类型的自动转换会报错,你要手动转换
Object str=list2.get(0);
String strf=String.valueOf(str);
System.out.println(strf);
复制代码
用Object接受然后在用String.valueOf(Object obj)进行转换
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2