package kilim.examples;
import java.lang.reflect.Method;
import kilim.Pausable;
import kilim.Task;
public class Reflect extends Task {
@Override
public void execute() throws Pausable, Exception {
int n = test();
System.out.println("test (normal invocation of instance method): " + n);
// Invoking test() via reflection
Method mthd = Reflect.class.getDeclaredMethod("test", new Class[0]);
Object ret = Task.invoke(mthd, this, /* no args */(Object[])null);
System.out.println("test (reflect invocation of instance method): " + ret);
n = static_test();
System.out.println("test (normal invocation of static method): " + n);
// Invoking test() via reflection
mthd = Reflect.class.getDeclaredMethod("static_test", new Class[0]);
ret = Task.invoke(mthd, /* target = */ null, /* no args */(Object[])null);
System.out.println("test (reflect invocation of static method): " + ret);
System.exit(0);
}
public int test() throws Pausable {
int m = 10;
for (int i = 0; i < 2; i++) { // Force multiple yields
Task.sleep(100);
m *= 2;
}
return m; // must return 40 if all goes well.
}
public static int static_test() throws Pausable {
int m = 10;
for (int i = 0; i < 2; i++) { // Force multiple yields
Task.sleep(100);
m *= 2;
}
return m; // must return 40 if all goes well.
}
public static void main(String args[]) {
Reflect ref = new Reflect();
ref.start();
ref.joinb();
}
}