public class TestStudent {
//测试普通方法
public void test(String str){
System.out.println(str);
}
//测试静态方法
public static void testStatic(String str){
System.out.println(str);
}
//测试私有静态方法
private static void testPrivate(String str){
System.out.println(str);
}
//测试私有方法
private String testReturn(){
System.out.println("赵六");
return "";
}
public static void main(String[] args) throws Throwable {
//相当于创建了MethodHandle工厂类
MethodHandles.Lookup lookup = MethodHandles.lookup();
MethodHandle mt = lookup.findVirtual(TestStudent.class, "test", MethodType.methodType(void.class, String.class)); //第一个参数为返回值类型,第二个参数为参数类型
mt.invoke(new TestStudent(),"张三");
MethodHandle m = lookup.findStatic(TestStudent.class, "testStatic", MethodType.methodType(void.class, String.class));
m.invoke("李四");
MethodHandle testPrivate = lookup.findStatic(TestStudent.class, "testPrivate", MethodType.methodType(void.class, String.class));
testPrivate.invoke("王五");
MethodHandle testReturn = lookup.findVirtual(TestStudent.class, "testReturn", MethodType.methodType(String.class));
testReturn.invoke(new TestStudent());
}
}