黑马程序员技术交流社区
标题:
main函数的反射问题,看我哪里错了,好纠结
[打印本页]
作者:
gudao20080
时间:
2013-8-14 23:20
标题:
main函数的反射问题,看我哪里错了,好纠结
看张老师的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)
复制代码
作者:
binghaiwang
时间:
2013-8-15 14:39
class ArgumentTest{
public void main(String[] args){
for(String str: args) //显示args的值
System.out.println(str);
}
}
复制代码
你这个类的main 不是静态的 你改成静态的就可以了
作者:
清心玉质
时间:
2013-8-15 17:01
ArgumentTest的main方法缺少静态修饰:
class ArgumentTest{
public static void main(String[] args){
for(String str: args) //显示args的值
System.out.println(str);
}
}
作者:
王永贺
时间:
2013-8-15 19:16
因为你调用的类中的main方法的格式不对 应该是public static void main。。。 你缺了static
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2