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

爱漫画-只做精品的韩漫网站如何选择商城网站建设

爱漫画-只做精品的韩漫网站,如何选择商城网站建设,企业网站建设需求书,物流网络建设的关键是物流节点和说明 author blog.jellyfishmix.com / JellyfishMIX - githubLICENSE GPL-2.0 获取泛型#xff0c;泛型擦除 下图中示例代码是一个工具类用于生成 csv 文件#xff0c;需要拿到数据的类型#xff0c;使用反射感知数据类型的字段#xff0c;来填充表字段名。可以看到泛型…说明 author blog.jellyfishmix.com / JellyfishMIX - githubLICENSE GPL-2.0 获取泛型泛型擦除 下图中示例代码是一个工具类用于生成 csv 文件需要拿到数据的类型使用反射感知数据类型的字段来填充表字段名。可以看到泛型 T 没有类似 getClass() 的方法因为编译后泛型 T 会被擦除在字节码中不存在 T 这个类型所以没办法通过 T 来获取某些信息。方法签名中的 java.util.ListT 编译后会变成 java.util.List。解决方式是显式传入 Class? clazz 来指定数据类型。 泛型嵌套 Class? clazz 只能传递一层数据类型无法解决泛型嵌套时的数据类型传递问题。对于泛型嵌套例如 ListListMapString, Person这样的类型。如果使用 Class? clazz 来传递只能感知到最外层的 List.class内层泛型还是会出现泛型擦除的情况。完整地传递泛型嵌套还是需要感知到具体的泛型。 TypeReference 原理分析–感知具体泛型 出现泛型嵌套情况时获取完整的泛型也是序列化组件需要面对的问题。解决方法例如 jackson 提供的 TypeReference。 泛型没有完全擦除 javac 编译后没有把所有持有泛型的位置都做擦除。编译后的字节码中子类的类签名显式指定了传递给父类的泛型。 根据子类获取向父类传递的泛型理论基础 作为 TypeReference 的替代品定义一个 CustomTypeHandler通过演义来展示 TypeReference 的原理 public abstract class CustomTypeHandlerT extends Object { }再定义一个 ChildCustomTypeHandler 子类继承父类时声明泛型。 public class ChildCustomTypeHandler extends CustomTypeHandlerListListMapString, Person {private String tag; }编译项目后使用 jclasslib(一个 IDEA 查看字节码的插件) 查看 ChildCustomTypeHandler.class 字节码发现 Attributes - Signature 属性中记录了类签名类签名显式指定了传递给父类的泛型。 class 文件结构 jvm 定义了 u1, u2, u4 三种数据结构来表示 1, 2, 4 字节无符号整数。class 文件采用类似 C 语言的结构体来存储数据如下所示: ClassFile {u4 magic;u2 minor_version;u2 major_version;u2 constant_pool_count;cp_info constant_pool[constant_pool_count-1];u2 access_flags;u2 this_class;u2 super_class;u2 interfaces_count;u2 interfaces[interfaces_count];u2 fields_count;field_info fields[fields_count];u2 methods_count;method_info methods[methods_count];u2 attributes_count;attribute_info attributes[attributes_count]; }中文说明: 魔数(Magic Number) 版本号(MinorMajor Version) 常量池(Constant Pool) 类访问标记(Access Flags) 类索引(This Class) 超类索引(Super Class) 接口表索引(Interfaces) 字段表(Fields) 方法表(Methods) 属性表(Attributes)类的字节码 Attributes - Signature 属性中记录了类签名类签名会显式指定传递给父类的泛型。这是根据子类获取向父类传递的泛型的理论基础及 TypeReference 的理论基础。 根据子类获取向父类传递的泛型 demo getActualTypeArguments 可能会存在多个泛型例如 MapK,V 所以会返回 Type[] 数组。根据 CustomTypeHandler 的约定只能向 CustomTypeHandler 传递一个最外层 T因此这里直接通过[0]拿 T。这里拿到的 T 是包含泛型嵌套的。例如子类声明 extends CustomTypeHandlerListListMapString, Person这里会拿到 ListListMapString, Person如果想继续拿嵌套的内层泛型可以继续调用 ParameterizedType#getActualTypeArguments public abstract class CustomTypeHandlerT extends Object {protected final Type _type;/*** 此方法实际由子类调用*/protected CustomTypeHandler() {Type superClass getClass().getGenericSuperclass();// sanity check, should never happenif (superClass instanceof Class?) {throw new IllegalArgumentException(Internal error: TypeReference constructed without actual type information);}/** getActualTypeArguments 可能会存在多个泛型例如 MapK,V 所以会返回 Type[] 数组* 根据 CustomTypeHandler 的约定只能向 CustomTypeHandler 传递一个最外层 T因此这里直接通过[0]拿 T。* 这里拿到的 T 是包含泛型嵌套的。例如子类声明 extends CustomTypeHandlerListListMapString, Person这里会拿到 ListListMapString, Person* 如果想继续拿嵌套的内层泛型可以继续调用 ParameterizedType#getActualTypeArguments*/_type ((ParameterizedType) superClass).getActualTypeArguments()[0];}public Type getType() {return this._type;} }扩展阅读 java Type 接口 https://blog.csdn.net/lvxiangan/article/details/94836504
http://www.eeditor.cn/news/120946/

相关文章:

  • 网站空间要备案吗西安seo和网络推广
  • 网站收录提交做网站那家公司好
  • 简历在线制作网站免费WordPress 输入任意作者
  • 专门做网站需要敲代码么seo有哪些作用
  • 南京网站优化网站开发流程是什么
  • 现在做一个网站最少要多少钱seo关键词推广话术
  • 江北网站制作门户型网站特点
  • 网站建设番禺哪个网站可以做问卷
  • 可以看网站的浏览器WordPress支持邮箱登录
  • 网站建设应该列入什么科目电子商务网站建设及其相关法律问题
  • 教育类php开源网站wordpress引用动画库
  • 东莞做微网站建设高新公司网站建设电话
  • wordpress插件 网站网站公司名称大全
  • 网站建设的职业叫什么wooyun wordpress
  • 贵阳有没有网站建设公司抚顺优化seo
  • 网站备案需要准备哪些资料扬州邗江建设局网站
  • 国外设计参考网站宁波seo在线优化
  • 建设主管部门网站查询西安专业网站建设服务
  • 师德师风建设好的小学网站请人做网站域名和主机
  • 东莞凤岗网站建设制作国际会议网站建设
  • 专业建材网站建设网站改关键词
  • 电子商务网站建设课程的心得如何做阿里巴巴网站
  • 178网站建设搞笑网站源代码
  • 电子商务网站建设题6优质做网站费用
  • 威海网站定制广州市公司网站建设报价
  • 专门做汽车gps贷款网站广州市建设工程价格信息
  • 做网站通过什么挣钱二维码生成器在线制作免费
  • 北京欢迎你网站制作公司深圳福田地址随便来一个
  • 湘潭市哪里做网站涿州注册公司流程和费用
  • 网站开发入帐分录阳西县网络问政平台公众号