/*
* This file is part of the Jikes RVM project (http://jikesrvm.org).
*
* This file is licensed to You under the Common Public License (CPL);
* You may not use this file except in compliance with the License. You
* may obtain a copy of the License at
*
* http://www.opensource.org/licenses/cpl1.0.php
*
* See the COPYRIGHT.txt file distributed with this work for information
* regarding copyright ownership.
*/
import java.lang.reflect.Method;
class InvokeReflect {
static String methodToRun = "run";
static String signatureToPrintOut = "()Z";
static Class[] noparams = {};
public static void main(String[] argv) throws Exception {
if (argv.length == 0) { printUsage(); return; }
for (int iArg=0; iArg<argv.length; iArg++) {
String arg = argv[iArg];
if (arg.startsWith("-h")) { printUsage(); return; }
// invoking methodToRun() in the class specified by arg
System.out.println("**** START OF EXECUTION of " + arg + "." +
methodToRun + " " + signatureToPrintOut + " ****.");
Class klass = Class.forName(arg);
Method method = klass.getDeclaredMethod(methodToRun, noparams);
Object result = method.invoke(null, (Object[])noparams);
System.out.println("**** RESULT: " + result);
}
}
// self-test
static boolean run() throws Exception {
methodToRun = "sampleRun";
String[] sampleArgv = {"InvokeReflect", "-h"};
System.out.println("Running `InvokeReflect InvokeReflect -h'");
main(sampleArgv);
return true;
}
static boolean sampleRun() {
System.out.println("This is InvokeReflect.sampleRun()");
return true;
}
static void printUsage() {
System.out.println("\nUsage: InvokeReflect className ...\n");
}
}