import java.lang.reflect.Method; // Test return values of Method.invoke. public class InvokeReturn { public boolean bTrue() { return true; } public boolean bFalse() { return false; } public char cc() { return 'c'; } public short s5() { return (short)5; } public int i6() { return 6; } public long l7() { return (long)7; } public float f8() { return (float)8.0; } public double d9() { return 9.0; } public static void main(String[] args) { try { Object o = new InvokeReturn(); Method m; // test boolean result m = o.getClass().getDeclaredMethod("bTrue", new Class[0]); System.out.println(m.invoke(o, new Object[0])); m = o.getClass().getDeclaredMethod("bFalse", new Class[0]); System.out.println(m.invoke(o, new Object[0])); // test char result m = o.getClass().getDeclaredMethod("cc", new Class[0]); System.out.println(m.invoke(o, new Object[0])); // test short result m = o.getClass().getDeclaredMethod("s5", new Class[0]); System.out.println(m.invoke(o, new Object[0])); // test int result m = o.getClass().getDeclaredMethod("i6", new Class[0]); System.out.println(m.invoke(o, new Object[0])); // test long result m = o.getClass().getDeclaredMethod("l7", new Class[0]); System.out.println(m.invoke(o, new Object[0])); // test float result m = o.getClass().getDeclaredMethod("f8", new Class[0]); System.out.println(m.invoke(o, new Object[0])); // test double result m = o.getClass().getDeclaredMethod("d9", new Class[0]); System.out.println(m.invoke(o, new Object[0])); } catch (UnsupportedOperationException e) { // We get this on targets which don't support reflection (no // libffi port yet). We might as well fake PASSes. System.out.println("true\nfalse\nc\n5\n6\n7\n8.0\n9.0"); } catch (Throwable t) { t.printStackTrace(); } } }