• 欢迎来到Compiler网站,如果对网站内容感兴趣或者帮助到你,请为文章点赞,谢谢!

Spring泛型处理

java 奔跑的蜗牛 2个月前 (04-25) 33次浏览 0个评论 扫描二维码

Java泛型基础

  • 泛型类型

    • 泛型类型是在类型上参数化的泛型类或接口

  • 泛型使用场景

    • 编译时强类型检查

    • 避免类型墙砖

    • 实现通用算法

  • 泛型类型擦写

    • 泛型被引入到Java语言中,以便在编译时提供更严格的类型检查并支持泛型编程。类型擦除确保不会为参数化类型创建新类。因此泛型不会产生运行时开销。为了实现泛型,编译器将类型擦除应用于:

      • 将泛型类型中的所有类型参数替换为其边界,如果类型参数是无界的 ,则将其替换为Object, 因此,生成的字节码只包含普通类,接口和方法。

      • 必要是插入类型转换以保持类型安全

      • 生成桥接方法以保留扩展泛型类型中的多态性。

Java 5 类型接口

  • Java 5 类型接口 – java.lang.reflect.LType

    派生类或接口说明
    java.lang.CLassJava类API, 如 java.lang.String
    java.lang.reflect.GenericArrayType泛型数组类型
    java.lang.reflect.ParameterizedType泛型参数类型
    java.lang.reflect.TypeVariable泛型类型变量, 如Collection<E>中的E
    java.lang.reflect.WildCardType泛型通配类型
  • Java泛型API

    类型API
    泛型信息(Generic Info)java.lang.Class#getGenericInfo()
    泛型参数(Parameters)java.lang.reflect.ParameterizedType
    泛型父类(Super Classes)java.lang.Class#getGenericSuperclass()
    泛型接口(Interfaces)java.lang.Class#getGenericInterfaces()
    泛型声明(Generics Declaration)java.lang.reflect.GenericDeclaration

    Spring泛型辅助类

    • 核心API – org.springframework.core.GenericTypeResolver

      • 版本支持:[2.5.2, )

      • 处理类型相关(Type)相关方法

        • resolveReturnType

        • resolveType

      • 处理泛型参数类型(ParameterizedType)相关方法

        • resolveReturnTypeArgument

        • resolveTypeArgument

        • resolveTypeArguments

      • 处理泛型类型变量(TypeVariable) 相关方法

        • getTypeVariableMap

Spring 泛型集合类型辅助类

  • 核心API – GenericCollectionTypeResolver

    • 版本支持[2.0, 4.3]

    • 替换实现:ResolvableType

    • 处理Collection相关

      • getCollection*Type

    • 处理Map相关

      • getMapKey*Type

      • getMapValue*Type

Spring 方法参数封装

  • 核心API – org.springframework.core.MethodParameter

    • 其实版本:[2.0, )

    • 元信息

      • 关联的方法 – Method

      • 关键的构造器 – Constructer

      • 构造器和方法参数索引 – parameterIndex

      • 构造器或方法参数类型 – parameterType

      • 构造器或方法参数泛型类型 – genericParameterType

      • 构造器或方法参数参数名称- parameterName

      • 所在的类 – containingClass

Spring 4.0 泛型优化实现 – ResolvableType

  • 核心API – `org.springframework.core.ResolvableType

    • 起始版本:[4.0 )

    • 扮演角色:GenericTypeResolverGenericCollectionTypeResolve替代者

    • 工厂方法:for*方法

    • 转换方法:as*方法

    • 处理方法:resolve*方法

局限性

  • ResolvableType无法处理泛型擦写

  • ResolvableType无法处理非具体化的ParameterizedType


Compiler编程笔记 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Spring泛型处理
喜欢 (1)
[阳光路上]
分享 (0)
发表我的评论
取消评论
表情 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址