黑马程序员技术交流社区

标题: 反射中的一些奇怪的问题 [打印本页]

作者: axing110    时间: 2014-10-25 10:25
标题: 反射中的一些奇怪的问题

难道这又是传说的新特性造成的吗???????

public class test_11 {

        public static void main(String[] args) throws NoSuchMethodException, SecurityException, ClassNotFoundException, IllegalAccessException, IllegalArgumentException, InvocationTargetException   {
                String str=args[0];
                Method me=Class.forName(str).getMethod("main",String[].class);
            me.invoke(null,(Object)new String[]{"wo","ai","zhonghua"});
        }
}
class MyMain
{
        public static void main(String[] args)
        {
                for(String  ss:args)
                {
                        System.out.println(ss);
                }
               
        }
}
这个里面的me.invoke(null,(Object)new String[]{"wo","ai","zhonghua"});这一句为什么不能强制转换为String呢???

大神在哪里


作者: 刘家斌    时间: 2014-10-25 11:46
新特性中invoke方法接收的是对象和一个可变参数,它传入的是一个object类型的数组,如果你直接传入String[],它会自动获取其中的String,如果传入的是基本数据类型的数组,才会当成一个数组参数处理,这里用object强转,就是在编译时告诉编译器这是一个类类型参数,所以不会将String[]拆开。
作者: xiaotian44    时间: 2014-10-25 12:05
哪句不能强制转换啊。
作者: 郑飞    时间: 2014-10-25 12:18
编译不通过正常 不同类型 不同维度 的直接不让比得 高新不是说了么
作者: axing110    时间: 2014-10-25 13:34
高新说了吗你看看视频仔细看下高新里面是能比的好吗?

作者: axing110    时间: 2014-10-25 13:39


作者: axing110    时间: 2014-10-25 13:40
看到了么?这个事可以比的哦......
作者: ximi    时间: 2014-10-25 13:54
int是基本类型,getClass()方法是对象的。Integer是int对应的包装类
作者: axing110    时间: 2014-10-25 20:12
感谢黑马
作者: xiaotian44    时间: 2014-10-25 20:56
我那边用的是jdk1.6编译运行是没有问题的,应该是新特性。
作者: 践行渐远    时间: 2014-10-25 21:33
jre1.7无编译错误
作者: nxp1986    时间: 2014-10-25 22:40
eclipse 直接导入项目,直接报错...目前正在查找解决方法




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2