A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© axing110 中级黑马   /  2014-10-25 10:25  /  1375 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


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

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呢???

大神在哪里

评分

参与人数 1技术分 +1 收起 理由
敏敏好学 + 1

查看全部评分

11 个回复

倒序浏览
新特性中invoke方法接收的是对象和一个可变参数,它传入的是一个object类型的数组,如果你直接传入String[],它会自动获取其中的String,如果传入的是基本数据类型的数组,才会当成一个数组参数处理,这里用object强转,就是在编译时告诉编译器这是一个类类型参数,所以不会将String[]拆开。
回复 使用道具 举报
哪句不能强制转换啊。
回复 使用道具 举报
编译不通过正常 不同类型 不同维度 的直接不让比得 高新不是说了么
回复 使用道具 举报
高新说了吗你看看视频仔细看下高新里面是能比的好吗?
回复 使用道具 举报

回复 使用道具 举报
看到了么?这个事可以比的哦......
回复 使用道具 举报
ximi 中级黑马 2014-10-25 13:54:54
8#
int是基本类型,getClass()方法是对象的。Integer是int对应的包装类
回复 使用道具 举报
感谢黑马
回复 使用道具 举报
我那边用的是jdk1.6编译运行是没有问题的,应该是新特性。
回复 使用道具 举报
jre1.7无编译错误
回复 使用道具 举报
eclipse 直接导入项目,直接报错...目前正在查找解决方法
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马