开发过程中遇到一个不能直接调用泛型工具类的方法,因此需要通过反射来摆脱直接依赖。

被调用静态方法示例

public class test{
public static <T> T get(Class<T> tClass){
try {
return test2.getData(tClass);
} catch (Exception e){
return null;
}
}
}

调用者示例

1     public static <T> T getData(Class<T> 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) 表示。。。。基础知识还是重要。

java 通过反射以及MethodHandle执行泛型参数的静态方法的更多相关文章

  1. kettle job如何利用java的反射机制获取执行的sql语句

    kettle job中的JavaScript如何获取同一个job中SQL步骤的执行语句并让执行语句记录在日志中呢?首先写日志需要用到job中JavaScript写日志的方法,其次是利用java反射机制 ...

  2. Gson通过借助TypeToken获取泛型参数的类型的方法

    最近在使用Google的Gson包进行Json和Java对象之间的转化,对于包含泛型的类的序列化和反序列化Gson也提供了很好的支持,感觉有点意思,就花时间研究了一下. 由于Java泛型的实现机制,使 ...

  3. Gson通过借助TypeToken获取泛型参数的类型的方法(转)

    最近在使用Google的Gson包进行Json和Java对象之间的转化,对于包含泛型的类的序列化和反序列化Gson也提供了很好的支持,感觉有点意思,就花时间研究了一下. 由于Java泛型的实现机制,使 ...

  4. 获取List、Set、Map等字段的泛型参数

    测试类加单元测试方法,运行结果在注释里面: package temp; import org.junit.Test; import java.lang.reflect.Field; import ja ...

  5. JAVA基础_反射获取泛型参数类型

    我经常会想获取参数的实际类型,在Hibernate中就利用的这一点. domain: Person.java public class Person { // 编号 private Long id; ...

  6. java 反射,注解,泛型,内省(高级知识点)

     Java反射 1.Java反射是Java被视为动态(或准动态)语言的一个关键性质.这个机制允许程序在运行时透过Reflection APIs    取得任何一个已知名称的class的内部信息, 包括 ...

  7. 通过反射获取父类中的泛型参数对应的Class对象

    假设有两个类:Dao 和 PersonDao,它们的代码如下: Dao: public class Dao<T> { private Class<T> clazz; T get ...

  8. Happy Java:定义泛型参数的方法

    在平时写代码时,可以自定义泛型类.当使用同一类型的对象时,这是非常有用的,但在实例化类之前,我们不知道它将是哪种类型. 下面让我们定义一个使用泛型参数的方法.首先,在定义一个类用到泛型时,必须使用特殊 ...

  9. Java使用反射来获取成员变量泛型信息

    Java通过指定类对应的Class对象,程序可以获得该类里包括的所有Field,不管该Field使用private修饰,还是使用public修饰.获得了Field对象后,就可以很容易的获得该Field ...

  10. ParameterizedType获取java泛型参数类型

    ParameterizedType getClass().getGenericSuperclass() 返回表示此 Class 所表示的实体(类.接口.基本类型或 void)的直接超类的 Type,然 ...

随机推荐

  1. el-input 限制输入框只能输入数字和小数

    方法一: oninput ="value=value.replace(/[^\d]/g,'')" //只能输入数字 oninput ="value=value.repla ...

  2. drf从入门到飞升仙界 04

    序列化类常用字段和字段参数 常用字段类 #1 BooleanField BooleanField() #2 NullBooleanField NullBooleanField() #3 CharFie ...

  3. FSCapture怎么取色

    启动软件后 点击setting->Screen color Picker 此时箭头会变为一个吸管形状, 选择要吸取的颜色,点击鼠标左键 出现如图所示 完了复制这个十六进制颜色值

  4. redis之redisObject对象

    redisObject对象 无论什么数据类型,redis都是以key-value形式保存,并且所有的key都是字符串redis每存储一条数据,都会生成一个redisObject对象,通过redisOb ...

  5. three.js基础用法

    import * as THREE from '../libs/build/three.module.js'; import { OrbitControls } from '../libs/jsm/c ...

  6. 「SOL」NOI2016 Day1 解题报告

    第一次打 NOI,还是先把以前的 NOI 题刷一遍吧? # 目录 目录 # 目录 # A. 优秀的拆分 excellent # B. 网格 grid # C. 循环之美 cyclic # 小结 # 源 ...

  7. Mysql学习:4、DML命令(增删改查)及密码修改

    1.查询表中所有数据: select * from students; 2.插入数据: insert into students (id,name,email,address) values(1,'张 ...

  8. web测试:test过程中接口报错 "Object reference not set to an instance of an object."

    "Object reference not set to an instance of an object." 对象引用未设置为对象的实例 可能原因: 1.参数类型传错,或少传参数 ...

  9. 简单的IP网络

    企业网络架构:小型.扁平化设计,特点:设备少,网络复杂度低,用路由器加交换或路由器就可以实现. 大中型,分层设计,接入层汇聚层核心层,特点:设备众多,网络组建复杂度高.终端设备较多,偏平化设计不适合. ...

  10. Pytest+allure+requests接口自动化

    实现功能 测试数据隔离: 测试前后进行数据库备份/还原 接口直接的数据依赖: 需要B接口使用A接口响应中的某个字段作为参数 对接数据库: 讲数据库的查询结果可直接用于断言操作 动态多断言: 可(多个) ...