java 泛式_JAVA如何在类中使用ParameterizedType获取泛式类型-程序员宅基地

技术标签: java 泛式  

在类中使用ParameterizedType获取类的实体类的泛式类

有以下代码:

public class Demo<T> {

private Class<T> clazz;

public T getDemo() throws InstantiationException, IllegalAccessException{

return clazz.newInstance();

}

public static void test() throws InstantiationException, IllegalAccessException{

String str = new Demo<String>().getDemo();

}

}

现在我要调用test()方法,获取一个String实体类,但当我调用的时候会抛出NullPointerException指clazz为空值,无法调用。那么这时候我改一下getDemo方法,使用ParameterizedType获取泛式并且赋值

public T getDemo() throws InstantiationException, IllegalAccessException{

Type superClass = getClass();

if(superClass instanceof ParameterizedType){

Type type = ((ParameterizedType) superClass).getActualTypeArguments()[0];

this.clazz = (Class<T>) type;

}else{

System.out.println("不相等");

}

return clazz.newInstance();

}

但是这时候获取到的superClass为 Demo ,并不是 Demo,因此superClass instanceof ParameterizedType不成立,控制台输出”不相等”,clazz仍未null,所以想问一下大家这种情况下要怎么样才能获取到泛型的类呢?

注意就算把Type superClass = getClass();改为 Type superClass = getClass().getGenericSuperclass(); 也是没有用的,因为Demo类不继承其他类,所以获取到的是Object,也是不相等的。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_35886717/article/details/114227398

智能推荐

java练习 二、判断语句 if--else语句_输入一个整数,如果此数为0,则输出”石头”,如果此数为1,则输出”剪刀”-程序员宅基地

文章浏览阅读2.5k次。1)接java练习 一、HelloWorld,地址:http://blog.csdn.net/u013871927/article/details/700576152)在src文件夹内创建IfPractice.java文件3)打开IfPractice.java,在里面编辑以下代码:public class IfPractice{public String practice(int_输入一个整数,如果此数为0,则输出”石头”,如果此数为1,则输出”剪刀”

报错:Data truncated for column 'parent_id' at row1 -程序员宅基地

文章浏览阅读1.5w次。如果在运行系统.sql脚本文件时报:Data truncated for column 'parent_id' at row1 错误。 主要原因是在建表的列为特定类型,而所插入的数据类型没与其字段一一对应。 比如本来建表中字段一个int类型的,而你在insert表时有个字段写成了string类型,则就报此错误了。

SAP 消息 有关成本控制范围 XXXX的控制标志不存在_有关成本控制范围的控制标志不存在-程序员宅基地

文章浏览阅读3.5k次。此错误问题解决路径如下:点开后编辑:再去做凭证发现错误消除了。_有关成本控制范围的控制标志不存在

IT运维的365天--009微信双开批处理文件运行出错(当前目录无效)的解决_微信多开bat找不到文件-程序员宅基地

文章浏览阅读848次。微信双开批处理,文件编码格式,ANSI_微信多开bat找不到文件

python 协程库gevent学习 -- 超时、互斥锁(BoundedSemaphore)、local_python gevent.lock-程序员宅基地

文章浏览阅读3.8k次。当其他greenlet去访问它的时候是无法访问到的,它只在自己的greenlet的命名空间中有效。这里Mylocal继承了gevent的local,这里重点介绍一下__slots__在这里的用法,我们知道在常规的类里面指定__slots__的意思往往是只允许该类下的属性只允许有__slots__里面这些,超出的就会报出Attribute error的错误。但是继承了local的__slots__在这里却是指,申明了的属性将会穿透所有greenlet变成一个全局可读的,并不再是线程本地的,这里注意下。_python gevent.lock

【nginx】如何解决使用nginx作为反向代理端口耗尽问题?_连接数过多导致nginx服务器端口数不足-程序员宅基地

文章浏览阅读2.4k次。TCP 长连接负载均衡问题(10W 用户) ----- TCP 长连接 ----- Nginx/HAproxy/LVS(软件负载) ------ TCP 长连接 ----- (实际业务,多台业务服务器)客户端 TCP 10W 长连接到 Nginx/HAproxy 这一步,没有问题。软件负载到实际业务这里,由于负载均衡(nginx) 是采用转发的方式进行处理的,本地会创建连接,当转发超出 65535 时,(nginx)就不能建立长连接了。Linux 系统调优参数基本已经设置过了,应该不是这_连接数过多导致nginx服务器端口数不足

随便推点

Python语言—爬虫之旅_python与视觉传达-程序员宅基地

文章浏览阅读100次。还有一些标志设计、插图、展示设计、包装设计、书籍设计、广告设计、海报设计、企业形象设计等这些课程,我对于我的艺术水平还是有自知之明的,但我会不断的努力,争取早日突破极限,主要涉及到的软件有photoshop,PublicRelations,ArtificialIntelligence,CINEMA4D等等当然,你还可以涉及到一些达芬奇,AutomotiveEngineering等等范围外的软件。在大数据时代,要熟练运用数据,爬取更多的数据源,不断的磨练,爬虫的基本知识和技术。..._python与视觉传达

基于javaweb的电力设备监测管理系统(servlet+jsp)_java 检测电力设备项目-程序员宅基地

文章浏览阅读96次。基于javaweb的电力设备监测管理系统(servlet+jsp)_java 检测电力设备项目

2023年09月 C/C++(四级)真题解析#中国电子学会#全国青少年软件编程等级考试_2023年9月电子学会真题-程序员宅基地

文章浏览阅读1.1k次。令Santo高兴的是,瓶子中的酒都有不同的味道。接下来的每组数据,第一行是一个整数 N (1 _2023年9月电子学会真题

Git基础语法-程序员宅基地

文章浏览阅读465次。git的基础语法_git基础语法

Java基于注解实现日志记录模块,超详细注释!_java如何使用注解记录日志-程序员宅基地

文章浏览阅读810次,点赞15次,收藏17次。在项目开发过程中,日志记录是一个至关重要的环节,它能够帮助开发人员追踪用户的重要操作,如新增、删除、修改等,从而有效监控系统的运行状态。通过日志记录,我们可以深入了解系统的运行情况,及时发现并解决问题,优化性能,提高用户体验。_java如何使用注解记录日志

Cisco 构建小型局域网络(三层交换机和路由器、ospf 动态路由配置)_思科中小型企业网络拓扑图及配置-程序员宅基地

文章浏览阅读1.2w次,点赞31次,收藏264次。一、实训内容:架构分析(1)需求分析本实验的目的在于建立小型局域网。由于公司由不同部门组成,并分布在不同地点,因此需要划分不同网络实现互联互通。设计以下网络:两个部门各使用一台交换机连接,然后连接到总交换机,再通过路由器与外网以及其他部门网络相连。为了控制网络上的广播风暴,增加网络的安全性,在交换机上需要设置VLAN,在路由器与交换机之间需要设置动态路由OSPF协议。(2)环境要求Cisco模拟器规划拓扑(1)拓扑描述地点1包括部门1和部门2;地点2包括部门3。部门1网络为子网3:172_思科中小型企业网络拓扑图及配置

推荐文章

热门文章

相关标签