zoukankan      html  css  js  c++  java
  • 反射中的一个问题点:利用Method执行main方法特殊的地方

    利用Method执行main方法

    问题:
        启动Java程序的main方法的参数是一个字符串数组,即public static void main(String[] args),通过反射方式来调用这个main方法时,
      如何为invoke方法传递参数呢?按jdk1.5的语法,整个数组是一个参数,而按jdk1.4的语法,数组中的每个元素对应一个参数,当把一个字符
      串数组作为参数传递给invoke方法时,javac会到底按照哪种语法进行处理呢?jdk1.5肯定要兼容jdk1.4的语法,会按jdk1.4的语法进行处理,
      即把数组打散成为若干个单独的参数。所以,在给main方法传递参数时,不能使用代码mainMethod.invoke(null,new String[]{“xxx”}),
      javac只把它当作jdk1.4的语法进行理解,而不把它当作jdk1.5的语法解释,因此会出现参数类型不对的问题。 解决办法: mainMethod.invoke(
    null,new Object[]{new String[]{"xxx"}}); mainMethod.invoke(null,(Object)new String[]{"xxx"}); ,编译器会作特殊处理,编译时不把参数当作数组看待,
        也就不会数组打散成若干个参数了

    ------------main方法很特殊,以下普通的就不会:

    原型:

        --------------

    输出:

     拓展:

    反射可以访问私有方法,是不是和Java的思想冲突呀?
    一点都不违背,java思想是从现实中来的,你想一下现实中,举例:社会不允许杀人,但是你硬要杀人还是没有办法阻止的。

  • 相关阅读:
    iOS项目的目录结构(Cocoa China)
    关于 initWithNibName 和 loadNibNamed 的区别和联系
    iOS开发60分钟入门
    爱您 母亲
    再鼓勇气学英语
    再鼓勇气
    discuz 手机上看帖子图片显示“[viewimg]”如何修改?
    discuz 模板中如何使用方法和语言标签?
    discuz X论坛技术架构 MVC结构浅析
    centos7 安装nodejs,git
  • 原文地址:https://www.cnblogs.com/rogge7/p/6846622.html
Copyright © 2011-2022 走看看