`
grandboy
  • 浏览: 123360 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

取得泛型T.class的方法

    博客分类:
  • JAVA
阅读更多
前几天写框架碰到T.class的问题,因为无法在一个类或者方法里得到T.class, 所以必须得靠一个参数把T.class传进去, 今天,想起这个问题,就搜了一下,在网上看到一篇文章(http://www.mscto.com/JavaScript/2009010958837.html),里面说可以得到类级别的T.class。 方法如下:
Class<T> entityClass = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];

Java中的泛型采用擦拭法。无法得到自己本身的泛型。而调用getGenericSuperclass()方法得到的是父类的泛型。不过一般也能解决问题。只要知道他的限制就行了,因势利导吧。

如果你想用一个Base类实现一些接口方法(只是实现方法,并没有实现全部方法,也不是实现接口),而且一个子类extends的这个Base类,由于你不会再在子类中实现同样的方法,所以Base类里的方法必须声明为public, 而且不是一般的Base类里可以是protected方法。

还有一个问题,如果你想使用CGLib来做代理的话,可能这种方法不行。因为CGLib是通过扩展和增强原来的类实现代理的,而这里的getClass()得到的很可能是CGLib生成的子类,这样就不能强制转换成ParameterizedType类型。大家在具体使用中注意这一点。

还需要得到方法里的T.Class,而且是静态方法,不知道能不能实现? 后来得到的答案是不能。 正如上面所讲的Java中的泛型采用擦拭法, 而且静态方法是可以被任何地方和其他任何方法调用的,根本就不会有Base类的“泛型T”,也就无法得到T.class。

以前都用JDK1.4, 最近公司才决定放弃1.4,这才开始研究泛型。







分享到:
评论
1 楼 zhangbenben 2011-07-04  
      

相关推荐

    飞歌G6IV刷机包,恢复出厂解决车机问题

    飞歌G6IV刷机包,恢复出厂解决车机问题

    人工智能大作业-无人机图像目标检测.zip

    无人机最强算法源码,易于部署和学习交流使用

    node-v10.9.0-linux-s390x.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    Telecord机器人,无electron依赖。.zip

    无人机最强源码,无人机算法,易于部署和学习交流使用

    中国统计NJ面板数据-(更新至2022年)林业有害生物防治情况.xls

    数据来源:中国统计NJ-2023版

    无人机共享平台小程序.zip

    无人机最强算法源码,易于部署和学习交流使用

    node-v10.14.2-linux-ppc64le.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    en-PP-OCRv3-det.onnx

    PP-OCR det

    毫无特色的 QQ 机器人.zip

    无人机最强算法源码,易于部署和学习交流使用

    麦肯锡 营销 概述与基本框架gl.ppt

    麦肯锡 营销 概述与基本框架gl.ppt

    node-v9.6.0-linux-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    大四多无人机协同控制技术的MATLAB工程.zip

    无人机最强源码,无人机算法,易于部署和学习交流使用

    大疆无人机RTK自定义网络连接和移动站,亲测可用.zip

    无人机最强源码,无人机算法,易于部署和学习交流使用

    node-v9.7.1-linux-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    Kendryte K210人工智能芯片应用程序集合,包括人脸检测、颜色检测、目标检测

    Kendryte K210人工智能芯片应用程序集合,包括人脸检测、颜色检测、目标检测和分类、二维码和Apriltag代码检测以及和ArduPilot飞控软件的通信。这些应用程序已部署到无人机终端。This repository is a collection of appl….

    node-v11.9.0-linux-armv6l.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    PHP开源 trx自动兑换机器人源码,一款自动USDT兑换TRX的telegram机器人源代码,完美无措,简单部署,直接运营

    PHP开源 trx自动兑换机器人源码,一款自动USDT兑换TRX的telegram机器人源代码,完美无措,简单部署,直接运营,无后门,无BUG,功能强大,带管理后台.zip

    基于51单片机+lcd12864显示俄罗斯方块小游戏MCU软件源代码.zip

    基于51单片机+lcd12864显示俄罗斯方块小游戏MCU软件源代码 * 单 片 机:STC89C52RC * 简 述:使用LCD12864显示的俄罗斯方块程序 * 功 能:计分,下一个方块预览,欢迎结束界面,长按连续左右移,暂停(按键Left+Turn) * IO口设定:按键 sbit key_sr_left=P3^7; sbit key_sr_turn=P3^6; sbit key_sr_right=P3^5; sbit key_sr_down=P3^4; LCD12864 sbit RS_Port=P1^0; sbit RW_Port=P1^1; sbit E_Port=P2^5; sbit PSB_Port=P1^2; sbit RST_Port=P1^4; 数码管锁存器 sbit dula=P2^6; sbit wela=P2^7;

    企业数智化转型全攻略:新质生产力赋能数字化运营体系建设方案.pptx

    企业数智化转型全攻略:新质生产力赋能数字化运营体系建设方案.pptx

    中国统计NJ面板数据-(更新至2022年)三次产业和主要行业贡献率.xls

    数据来源:中国统计NJ-2023版

Global site tag (gtag.js) - Google Analytics