如果使用的是JDK7,则可以使用MethodHandle实现此目的:
public class Test extends base { public static void main(String[] args) throws Throwable { MethodHandle h1 = MethodHandles.lookup().findSpecial(base.class, "toString", MethodType.methodType(String.class), Test.class); MethodHandle h2 = MethodHandles.lookup().findSpecial(Object.class, "toString", MethodType.methodType(String.class), Test.class); System.out.println(h1.invoke(new Test())); // outputs base System.out.println(h2.invoke(new Test())); // outputs base } @Override public String toString() { return "Test"; }}class base { @Override public String toString() { return "base"; }}


