A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 杨兴庭 于 2013-8-2 18:56 编辑
  1. package cn.itcast.day1;

  2. import java.lang.reflect.*;

  3. public class ReflectTest {
  4.         public static void main(String[] args) throws ClassNotFoundException,
  5.         NoSuchMethodException, SecurityException, IllegalAccessException,
  6.         IllegalArgumentException, InvocationTargetException {
  7.                 Class startClass = Class.forName(args[0]);
  8.                 Method mMain = startClass.getMethod("main", String[].class);
  9.                 mMain.invoke(null, (Object)new String[]{"1111","2222","3333"});
  10.         }
  11. }
  12. class TestArguments {
  13.         public void main(String[] args) {
  14.                 for(String arg : args) {
  15.                         System.out.println(arg);
  16.                 }
  17.         }
  18. }
复制代码
运行结果:
Exception in thread "main" java.lang.NullPointerException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at cn.itcast.day1.ReflectTest.main(ReflectTest.java:11)

运行配置中把args[0]配置成了cn.itcast.day1.TestArguments
代码也基本是按老师教的写的
可为什么会出错呢???

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

2 个回复

倒序浏览
  • class TestArguments {
  •         public void main(String[] args) {
  •                 for(String arg : args) {
  •                         System.out.println(arg);
  •                 }
  •         }
  • }


这里的main函数不是静态的,而mMain.invoke(null, (Object)new String[]{"1111","2222","3333"});是调用静态方法的,所以将main函数改为静态的即可。

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
liye20110 发表于 2013-8-1 22:06
  • class TestArguments {
  •         public void main(String[] args) {
  •                 for(String ...

  • 汗!代码不规范啊,要多注意细节了
    回复 使用道具 举报
    您需要登录后才可以回帖 登录 | 加入黑马