利用Java反射机制调用其他类的main方法 .
来源:互联网 发布:兰州宏点网络 编辑:程序博客网 时间:2024/05/16 06:15
利用Java反射机制去调用其他类的main方法基于这种情形:
当程序中的某个类在运行到某处需要去调用其他类的main方法时,如果此程序并不知道此main方法所属类的名称,而只是在程序中接受某一代表此main方法所属类的名称的参数,那么这时候就不能通过“类名.main(String[] args);"这样的方式来完成调用,而需要运用Java的反射机制了,需要编写相关的反射代码来完成对其他类的main方法的调用。
#####
例子:
有一个类,类名为ReflectTest,设定在其main方法中接受的String数据参数的第一个,即args[0]为所要调用的main方法所属类的类名,则与之相关的反射代码为:
String startingClassName = className;
Method mainMethod = Class.forName(className).getMethod("main", String[].class);
mainMethod.invoke(null, (Object)new String[]{"a", "b", "c"});
这里解释一下(Object)new String[]{"a", "b", "c"}这段代码。
启动Java程序的main方法的参数是一个字符串数组,即public static void main(String[] args),通过反射方式来调用这个main方法时,如何为invoke方法设置参数呢?
按jdk 1.5的语法,由于使用的是可变参数(Object类型),设置的数组参数会被作为一个参数进行传递,而按jdk 1.4的语法,此处应设置一个Object数组,数组中的每个元素对应所调用方法的一个参数。
当把一个字符串数组作为参数传递给invoke方式时,编译器会兼容jdk 1.4的语法,即按照1.4的语法进行处理,即把字符串数组打散成为若干个单独的参数,这样就会产生参数个数不匹配的异常。
解决方法:采用上述强制向上转型后,可以是编译器按照正确的方法进行参数处理,即将整个字符串参数作为整体传递给目标main方法。
注:使用new Object[]{new String[]{"a", "b", "c"}}作为invoke方法的第二个参数也可以得到正确的结果。比如在目标main方法中便利字符串数组元素。
- 利用Java反射机制调用其他类的main方法
- 利用Java反射机制调用其他类的main方法 .
- 利用反射调用指向其他类的main方法
- 利用Java反射机制调用类方法
- java中用反射调用其他类的main方法时应注意的问题
- 利用java反射机制调用类的私有方法
- 利用java反射机制实现自动调用类的方法
- java如何利用反射机制调用类的私有方法
- Java中通过反射调用其他类中的main方法时要注意的问题
- java 主类的main方法调用其他方法
- 利用Java反射机制调用含数组参数的方法
- 利用Java反射机制调用含数组参数的方法
- 黑马程序员-反射调用其他类main方法
- 利用java的反射机制调用类的私有方法及私有属性
- 利用java反射机制调用类的public公有方法的例子
- Java反射机制,Java注解,利用Java反射调用类方法,自定义Java注解
- 利用java反射机制实现javaweb自动调用类的方法
- 黑马学习---------------反射(执行其他类的main方法)
- Android横竖屏总结
- Android数据存储
- Gtk-WARNING **: 无法在模块路径中找到主题引擎:“pixmap”?
- 栈与堆的区别
- Android adb工具的使用
- 利用Java反射机制调用其他类的main方法 .
- Android对话框
- zoj 2760 How Many Shortest Path(Floyd+枚举判边是否在最短路上+最大流)
- Java反射机制简介 .
- Android ListView理解
- 【tarjan求双连通分量】PKU-3177&3352
- Android GIS 在国土行业应用
- 脚本中的“指针”
- Android GIS 在电力行业应用(导航巡检)