/**
* @description:
* @author: Candy
* @date: 2022-04-28 22:43
**/
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());
}
}
java7新特性MethodHandle学习
最新推荐文章于 2024-06-17 16:37:42 发布