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

被调用静态方法示例

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. node.js 新手快速入门

    我当初学的时候,是在大大们的指导下开始学习的,用了3天搞定大大们给的任务.下面我就把这个经历分享出来,让大家借鉴一下.欢迎吐槽~~ 任务如下: 根据Node js 开发入门教程第五章的一个使用node ...

  2. 【otter搭建】在Linux下搭建阿里开源otter数据同步平台

    一,准备安装包和配置文件 JDK:https://www.oracle.com/technetwork/java/javase/downloads/index.html Zookeeper:https ...

  3. Software--电商平台系统--P3 Product Catalogy 商品目录模块

    2018-01-15  15:25:20 商品目录 服务层 控制器层 ProductCate 服务层 Controller 控制器层

  4. axios上传excal方法

    方法一(适合传文件且带参数的方法) HTML内容 <a href="javascript:;" class="select-file"> <i ...

  5. select from 多表和inner join的区别

    其实两者是一样的,inner join 只是为了区分left join和right join整出来的,本质还是逐行比较

  6. 逆向学习物联网-网关W5500-00课程目的

  7. 阿里云 rocketMq 延时消息

    初始化消费者和生产者 生产者 设置rocketmq的accesskey 和secretkey 以及rocketmq的 binder server. 首先 编辑一个配置类,将关于配置rocketmq的东 ...

  8. JavaScript基础知识整理(引用类型-Object)

    Object类型 其他的引用类型都是Object类型的实例,创建Object实例有两种方式 (1)使用构造函数 var obj = new Object(); obj.name = "xia ...

  9. WEB攻击与防御技术 pikachu——sql注入

    如图所示,sql注入 一.数字型注入 既然是post那我们拿burp抓一下包 id=2,我们改一下sql最常用的语句2 or 1=1发现注入成功 二.字符型注入 直接上语句1' or 1=1 # 出来 ...

  10. 中国人民公安大学 Chinese people’ public security university 网络对抗技术 实验报告4

    中国人民公安大学 Chinese people' public security university 网络对抗技术 实验报告   实验四 恶意代码技术     学生姓名 陈禹 年级 2018 区队 ...