在项目中用到了在一个java类main方法中调用另一个类中的main方法来解决java1.2不能使用Axis的问题。在网上查了查发现还真能调用。这用到了java的反射机制。
下面直接写例子吧:
这个类是被调用的main方法类:
public class Run {
public static void main(String[] args) {
String str=args[0]+"Hello World";
System.out.println(str);
}
}
下面是调用main方法的类:
public class JobRun {
public static void main(String[] args) {
String idStr = "YAya";
try {
Method method = Run.class.getMethod("main",
String[].class);
method.invoke(null,
(Object) new String[] { idStr });
} catch (Exception e) {
e.printStackTrace();
}
}
}
在写程序时,调用Method类的方法invoke(Object,Object)时老是报参数类型不匹配。我是这样写的method.invoke(Run.class.newInstance(),(Object) new String[]{idStr});错就错在main方法是类Run的静态方法,调用时是不需要对象实例的。
还有一个兼容问题:
method.invoke(null, new String[]{"ma","xiao"}); //★这思想是对的,但是版本问题,不允许了
//现在对了,然后还报 wrong number of arguments,下面详细说明
//::
//现在说参数的个数不对
//我要的方法我已经说了,它需要一个参数,那个参数是一个数组
//如果按照1.5的语法,是没有问题的
//但是SUN必须要考虑到老版本,
//老版本的语法,很多的时候拿到一个数组时,它会迈力的给你一个一个拆开
//而JVM又是按照老版本的方法执行的,
//所以这里我传的new String[]{"ma","xiao"}被它拆成两个参数了
//所以如果我只传一个,new String[]{"ma"},还是拆,说argument type mismatch,
//当然,需要的是数组,你给个字串当然 argument type mismatch
//怎么办,你既然要拆,那我最多再给你包一层,让你去拆吧
method.invoke(null, new Object[]{new String[]{"ma","xiao"}});
//这样,JVM一拆,拆出的一个数组,正是我想要的效果 run OK!
//还有一个方法
method.invoke(null, (Object)new String[]{"hello","world"});
//强制转成一个 Object 1.4不是看见数组参数就拆么?[数组的引用应该是不会拆的]
//现在 JVM看不见数组了,不拆了,run OK!
就这么多了,希望对大家有帮助
分享到:
相关推荐
java语言后台请求网站操作 java中main方法发送httpPost请求
在定义方法时,一个方法内不能再定义另一个方法,即不能嵌套定义,但是在调用一个方法的过程中,还可以调用另一个方法,这是方法的嵌套调用。 方法的嵌套调用 假设main方法中调用a方法,a 方法中调用b方法,具体流程...
最近项目需要,自己根据网上找的代码,自己改了一下,主要是把jar包的加载改成了循环加载,而不是一句句写。亲测可用。
2.不用 main 方法如何运行一个类? 不行,没有 main 方法我们不能运行 Java 类。 在 Java 7 之前,你可以通过使用静态初始化运行 Java 类。但是,从 Java 7 开始就行不通了。 3.main 方法如何传递参数?传递参数的...
定义两个类Dog,SmallDog,SmallDog继承Dog 说明一:关于Dog 两个属性,狗的名字(dogName,...最后,在测试类中的main方法中生成SmallDog类的对象,访问属性dogName和dogAge,并打印出他们的值;调用dogWalk(),看看效果.
这是在java中方法的设置和调用,可以在main的函数中直接调用,简化数据量。
创建一个名为Rectangle的类来表示一个使用宽度和高度来改变量的矩形,矩形的宽度和高度由构造方法来确定。为Rectangle类创建下列方法: ...在另一个类TestRectangle中编写main方法来测试Rectangle类。
本专栏主要为Java程序设计(基础)实验报告和Java程序设计(进阶)实验报告,基础篇有JAVA环境搭建、Java语言基础、方法和数组、面向对象基础、Java常用类、继承与接口、成员访问控制与异常、JavaFX程序设计、Java...
1.定义一个学生类(Student),属性有private的名字(name), public的年龄(age),专业(specialty)和封装name属性的方法:setName(),getName(),getspecialty()编写Application,创建一个学生对象,设置name和age属性值...
java类,该类可以对一组数值进行由小到大排序。主类的main方法中,从键盘上输入一组数值,使用该类对其排序。
1、若在某一个类定义中定义有如下的方法: final void aFinalFunction( );则该方法属于( )。 A、本地方法 B、解态方法 C、最终方法 D、抽象方法 2、main方法是Java Application程序执行的入口点,关于main方法的...
定义一个Father和Child类,并进行测试。 要求如下: 1)Father类为外部类,类中定义一个私有的String类型的属性name,...3)定义一个测试类Test,在Test类的main()方法中,创建Child对象,并调用introFather ()方法。
在Main类中,我们创建了一个BankAccount对象,并通过调用对象的方法来进行存款、取款和获取账户余额等操作。这个示例展示了类和对象的概念在实际应用中的运用,模拟了一个银行账户的基本操作,包括存款、取款和打印...
main方法启动服务-main方法启动服务-main方法启动服务
用java编写一个类monkey 一个简单的 Java 类 Monkey 的示例。这个类代表了一个猴子对象,并...在 main 方法中,我们创建了一个 Monkey 对象,并演示了如何调用它的方法和获取属性。您可以根据需要扩展和修改这个类。
Printer类应创建一个线程,线程读取Storage类中的值并打印值。编写程序创建Storage类的实例,并创建一个Counter对象和Printer对象操作此实例。 实验步骤: (1)、创建三个类Counter, Printer,Storage (2)、创建...
Java多线程实现异步调用实例。运行Main可以看到结果。main是主线程,另有A,B,C三个线程用不同的时间跑完。
invokeMethod.java 同一个类中调用方法示例 invokeOther.java 类的外部调用方法示例 invokeStaticMethod.java 调用静态方法示例 localVariable.java 演示局部变量 localVSmember.java 局部变量与成员变量同名...
创建另一个类Test_Vehicle,在main主方法中分别通过使用Vehicle接口创建关于Car 与Bike类的引用对象audi与yongjiu。使用接口Vehicle的两个引用对象分别调用各自的启动start()与刹车stop(),显示不同运输工具的多态性...
d 声明PersonApp类,在其中的main方法中分别声明Person、Student、Teacher类型的变量,并通过构造方法初始化,然后显示各自的信息。 2 声明一个Shape接口,其中有计算面积(area)、周长(perimeter)的方法,有以下...