看张老师的JAVA基础增强,说到main函数的反射,如下:
将一个类名com.itheima.MyPacket.ArgumentTest 以字符串的形式传递给类ReflectMethod中的main参数。
按老师说的,我在myEclipse中---Run As-----Run configuration---Arguments----program argument中设置参数
com.itheima.MyPacket.ArgumentTest 。然后运行,为什么一直异常- package com.itheima.MyPacket;
- import java.lang.reflect.InvocationTargetException;
- import java.lang.reflect.Method;
- public class ReflectMethod {
- public static void main(String[] args) throws Exception {
- // TODO Auto-generated method stub
-
- String startClassName = args[0];//将输入的第一个字符串做为类名
- //取得传入的字符串类名的main方法
- Method mainMethod = Class.forName(startClassName).getMethod("main", String[].class);
-
- mainMethod.invoke(null, (Object)new String[]{"111","222","333"}); //调用main方法
- }
- }
- class ArgumentTest{
- public void main(String[] args){
- for(String str: args) //显示args的值
- System.out.println(str);
- }
- }
复制代码 运行结果:- Exception in thread "main" java.lang.NullPointerException
- at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
- at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
- at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
- at java.lang.reflect.Method.invoke(Method.java:601)
- at com.itheima.MyPacket.ReflectMethod.main(ReflectMethod.java:15)
复制代码 |
|