获取泛型类型工具类

Java泛型在编译阶段会进行泛型擦除,所以能够在运行期获得的泛型是在编译阶段已经确定(继承的泛型类)了的。

 1 public class GenricUtils {
 2     /**
 3      * 获得泛型类型
 4      * @param clz
 5      * @return
 6      */
 7     public static <T> Class<T> getGenricClassType(Class clz){
 8         Type type = clz.getGenericSuperclass();
 9         if(type instanceof ParameterizedType){
10             ParameterizedType pt = (ParameterizedType) type;
11             Type[] types = pt.getActualTypeArguments();
12             if(types.length > 0 && types[0] instanceof Class){
13                 return (Class) types[0];
14             }
15         }
16         return (Class) Object.class;
17     }
18 }

比如:

1 class TestA<T>{
2     private Class<T> clz = GenricUtils.getGenricClassType(TestA.class);
3     public  void get(String id){
4         session.get(clz,id);
5     }
6 }
7 class TestB extends TestA<String>{
8 }

在执行:

System.out.println(getGenricClassType(TestA.class));
System.out.println(getGenricClassType(TestB.class));

输出的结果分别为:

class java.lang.Object
class java.lang.String
时间: 2024-12-28 01:53:09

获取泛型类型工具类的相关文章

单位换算(格式化十进制数-B),获取时间工具类CommenUtil

package com.example.administrator.filemanager.utils; import java.text.DecimalFormat;import java.text.SimpleDateFormat;import java.util.Date; /** * Created by Administrator on 2016/12/29. */ public class CommonUtils {    //DecimalFormat:用于格式化十进制的数字   

获取图片工具类:BitmapUtil

package com.example.administrator.filemanager.utils; import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.BitmapFactory.Options; /** * Created by Administrator on 2016/12/30. */ p

java从Swagger Api接口获取数据工具类

原文地址:https://www.cnblogs.com/xiqoqu/p/9681582.html

android 蓝牙低功耗(BLE)非常棒的工具类,获取小米手环的步数

现在物联网搞的轰轰烈烈的,小米的手环等一系列产品,下面我们就来研究一下小米手环的记步功能 工具类 package com.zsl.bluetoothdemo.ble; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothGatt; import android.bluetooth.BluetoothGattCal

DButils工具类可以用来获取数据库连接向数据库插入更新删除对象2

package com.ctl.util; import java.awt.Color; import java.awt.Font; import java.awt.Insets; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.io.*; import java.lang.reflect.*; import java.sql.*; import java.text.SimpleD

智能机器人“小昆”的实现(二)获取服务器数据工具类的编写及测试

没有取得图灵机器人认证的朋友可以看上一篇,点击下面的地址即可: http://www.cnblogs.com/fuly550871915/p/4852148.html 已经取得认证的朋友,可以继续往下做了.下面就开始我们的实际代码编写.在这篇文章中,我们要实现通过调用图灵机器人API获取返回的数据的功能.而且搭建相应的测试环境,看看我们这个功能实现的到底正确不正确. 一.获得服务器返回数据的工具类的实现 主要是android中的简单的网络编程知识的运用.代码如下: 1 package com.f

Android自定义工具类获取按钮并绑定事件(利用暴力反射和注解)

Android中为按钮绑定事件的有几种常见方式,你可以在布局文件中为按钮设置id,然后在MainActivity中通过findViewById方法获取按钮对象实例,再通过setOnClickListener为按钮绑定事件,如下所示: //1.获取控件 btn = (Button)findViewById(R.id.button1); //2.绑定事件 btn.setOnClickListener(new OnClickListener() { @Override public void onCl

Android设备网络、屏幕尺寸、SD卡、本地IP、存储空间等信息获取工具类

Android设备网络.屏幕尺寸.SD卡.本地IP.存储空间.服务.进程.应用包名等信息获取的整合工具类. 1 package com.qiyu.ddb.util; 2 3 import android.annotation.SuppressLint; 4 import android.annotation.TargetApi; 5 import android.app.Activity; 6 import android.app.ActivityManager; 7 import androi

Hibernate5-进阶添加工具类,对获取Session的方法封装

1.创建项目,项目名称hibernatedemo3,目录结构如图所示 2.在项目中创建lib目录存储jar文件,目录结构如图所示 3.在src目录中创建实体Bean Forum,包名(com.mycompany.demo.bean),如图所示 4.实体Bean Forum的内容如下 package com.mycompany.demo.bean; public class Forum { private int fid; private String name; public Forum() {