main方法的反射
来源:互联网 发布:简单校园网络规划设计 编辑:程序博客网 时间:2024/05/16 18:42
反射的确是java中很厉害的一项技术,但在main方法的反射中却不能按照常规那样反射,举例说明:
class Student{ public static void sa(int num) { System.out.println(num); } public static void main(String [] args) { System.out.println("main"); }}
对于上面的sa方法,我只需使用如下代码:
public void test5()throws Exception{Class clazz=Class.forName("cn.lcu.day01.Student");Method m=clazz.getMethod("sa", int.class);m.invoke(null, 20);}
就能得到结果20
但如果用如下代码反射main方法的话,则会报异常:java.lang.IllegalArgumentException: wrong number of argumentspublic void test6()throws Exception { Class clazz=Class.forName("cn.lcu.day01.Student"); Method m=clazz.getMethod("main", String[].class); //m.invoke(null, (Object)new String[]{"aa","bb"}); //m.invoke(null, new Object[]{new String[]{"aa","bb"}}); m.invoke(null, new String[]{"aa","bb"}); }
这是因为在java升级过程中,会兼容1.4版本,而1.4版本反射的时候用的是数组参数,
1.4 Method.invoke(Object obj, Object obj[])
1.5 Method.invoke(Object obj, object ...obj)
这样的话,invoke中传入的String数组会被拆开,成("aa","bb"),所以就会报上边的异常。
解决方法: m.invoke(null, (Object)new String[]{"aa","bb"});
或者 m.invoke(null, new Object[]{new String[]{"aa","bb"}});
- main方法的反射
- 反射 类的main方法
- java基础:反射类的main方法
- java 之反射类的main方法
- 反射调用main方法
- 反射调用main方法
- 反射main方法
- Java 反射学习(五)反射的main方法
- 成员方法的反射:调用类中的main方法
- 关于反射带有数组参数的方法的调用(main)
- 反射调用main方法注意事项
- java反射类main方法
- 反射机制-触发main方法
- 利用Java反射机制调用其他类的main方法
- 黑马学习---------------反射(执行其他类的main方法)
- Java反射在Main方法的中的而应用
- 利用Java反射机制调用其他类的main方法 .
- 利用反射调用指向其他类的main方法
- jQuery Select操作大集合
- Linux 的启动流程
- SellStop/SellLimit/BuyStop/BuyLimit
- discuz X3数据库表结构
- Redminebacklogs 处理未完成的story
- main方法的反射
- vs2010安装帮助文档的方法
- UVA11234- Expressions
- C++ STL 容器 迭代器 算法 [大三四八九月实习]
- forward和redirect的问题(路径问题)
- 仰恩大学CSDN高校俱乐部运营策划
- 机器视觉(相机、镜头、光源)全面概括
- android.content.res.Resources$NotFoundException:String resource ID #0x86
- c/c++位操作简介--移位、位与、位或、异或