当前位置: 首页 > news >正文

it之家网站源码成都又出现新增病例了

it之家网站源码,成都又出现新增病例了,办公室设计报价,网站开发先学什么1.官方API对这两个方法的介绍 getSuperclass : 返回表示此 Class 所表示的实体(类、接口、基本类型或 void)的超类的 Class。如果此 Class 表示 Object 类、一个接口、一个基本类型或 void,则返回 null。如果此对象表示一个数组类&#xff…

1.官方API对这两个方法的介绍 

getSuperclass :
返回表示此 Class 所表示的实体(类、接口、基本类型或 void)的超类的 Class。如果此 Class 表示 Object 类、一个接口、一个基本类型或 void,则返回 null。如果此对象表示一个数组类,则返回表示该 Object 类的 Class 对象。
getGenericSuperclass :
返回表示此 Class 所表示的实体(类、接口、基本类型或 void)的直接超类的Type。如果超类是参数化类型,则返回的 Type 对象必须准确反映源代码中所使用的实际类型参数。如果以前未曾创建表示超类的参数化类型,则创建这个类型。有关参数化类型创建过程的语义,请参阅 ParameterizedType 声明。如果此 Class 表示 Object 类、接口、基本类型或 void,则返回 null。如果此对象表示一个数组类,则返回表示 Object 类的 Class 对象。

2.二者异同点

两个方法都是获取超类的类型,看一个例子:

打印结果 :

 

这两者都能获取父类的类型,但是如果我们换成下面形式,我们就可以找到两个方法差别。

 

上面的方法, 我们使用 ”getGenericSuperclass()” 方法获取父类的类型, 然后重新读一遍该方法的说明 “如果超类是参数化类型,则返回的 Type 对象必须准确反映源代码中所使用的实际类型参数 ”。 也就是这种方式可以获取超类的参数类型, 也就是泛型中的”Integer”类型。
但是如果上面方法我们使用 ”getSuperclass()“ 方法就会出现类型转换错误 ”java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType”。

再举一个例子
父类:

package com.itheima.mytest;public class Person<T1, T2> {}

子类:

package com.itheima.mytest;import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;public class Student extends Person<Integer, String> {@SuppressWarnings("rawtypes")public static void main(String[] args) {Student student = new Student();// getClass() 获得该类的类类型(即类型变量)Class clazz = student.getClass();// getSuperclass() 获得该类的父类System.out.println(clazz.getSuperclass());// getGenericSuperclass() 获得该类带有泛型的父类Type type = clazz.getGenericSuperclass();System.out.println(type);// Type是 Java 编程语言中所有类型的公共高级接口。它们包括原始类型、参数化类型、数组类型、类型变量和基本类型。// ParameterizedType 参数化类型,即泛型// 将Type转化为参数化类型(即泛型)ParameterizedType p = (ParameterizedType) type;// getActualTypeArguments() 获取参数化类型的数组,泛型可能有多个Type[] actualTypeArguments = p.getActualTypeArguments();// 将Type转化为类型变量(即Class)Class c1 = (Class) actualTypeArguments[0];Class c2 = (Class) actualTypeArguments[1];System.out.println(c1);System.out.println(c2);}
}

 运行结果

class com.itheima.mytest.Person
com.itheima.mytest.Person<java.lang.Integer, java.lang.String>
class java.lang.Integer
class java.lang.String

3. 实际应用

记得以前使用hibernate时候, 我们会为所有Dao创建一个BaseDao, 将一般的增删改查操作抽取到BaseDao中。
下面就是一个例子 : 

我们将增删改查一般操作放在BaseDao中, 但是在”查”过程中, 遇到问题。当使用Hibernate拼写HQL时候, 查一张表需要知道这张表对应的对象的名称 . 比如”t_user”对应”User” . 那么在HQL中需要使用”User”。

在上面构造方法中,父类BaseDao中获取子类操作类型对象 (UserDao操作User, DepartmentDao操作Department),利用泛型然后使用反射里的 ”getGenericSuperclass” 方法, 就可以获取到对应的类型 ,进而获取对应的className 。

http://www.yayakq.cn/news/899240/

相关文章:

  • 网站虚拟主机管理一级门户网站建设费用
  • 免费网站建站凡科建站iis建站安装wordpress
  • 收费网站解决方案114黄页企业信息查询
  • 做网站所需要的技术十堰秦楚网十堰晚报新闻
  • 用nas做网站服务器产品设计公司招聘
  • 黑白摄影网站开发一个app需要多少钱?
  • 谷德设计网站微信商城怎么运营
  • 如何为公司建立网站网站改了关键词
  • 写作网站最大网页视频下载软件免费版
  • 沈阳网站制作的公司广州各区风险区域最新动态
  • 帮朋友做网站程序界面设计
  • 织梦网站tag自定义插件社交电商平台种类
  • 设计的好看的网站wordpress发布文章禁用谷歌字体
  • 电商网站优化方案营销型网站分析
  • 有哪些做平面设计好的网站有哪些如何做一个电商
  • 枸杞网站的建设方案公司宣传片如何制作
  • 营销型网站应用本地网站开发
  • 保定专业做网站的公司阿里企业邮箱个人登录
  • 电子商城网站怎么做张家港做淘宝网站
  • 网站后台域名网站开发部署到国外
  • 网站如何做微信推广方案西山网站建设
  • 免费网站管理系统下载google搜索引擎
  • 新泰营销型网站建设濮阳做公司网站
  • 手机网站模板带后台广西南宁做网站的公司
  • 制作网页时关于可以采用的图像文件格式正确的描述是网站大图片优化
  • 钓鱼网站链接安丘做网站
  • 网站工商网监标郑州的设计公司
  • 西安专业网站建设服务想自己做网站 有免费的吗
  • 石家庄网站怎么建设合作做网站的总结和心得
  • php网站开发开发网站教程海宁做网站