java 通过反射以及MethodHandle执行泛型参数的静态方法
开发过程中遇到一个不能直接调用泛型工具类的方法,因此需要通过反射来摆脱直接依赖。
被调用静态方法示例
public class test{ public staticT get(Class tClass){ try { return test2.getData(tClass); } catch (Exception e){ return null; } } }
调用者示例
1 public staticT getData(Class tClass) { 2 try { 3 MethodType methodType = MethodType.methodType(Object.class, Class.class); 4 MethodHandle method = MethodHandles.lookup().findStatic(Class.forName("com.xxx.adapter.context.test"), "get", methodType); 5 return (T) method.invoke(tClass); 6 }catch (Throwable e){ 7 return null; 8 } 9 }
一开始没搞明白如何能获取到泛型方法的方法句柄。
后来发现可以直接用 MethodType.methodType(Object.class, Class.class) 表示。。。。基础知识还是重要。