Java: ParameterizedType用法与简介

本文介绍了Java中的ParameterizedType,它用于表示参数化类型。通过示例展示了如何判断字段是否为泛型类型,以及如何使用getGenericType、getActualTypeArguments和getRawType等方法来获取和处理泛型信息。
摘要由CSDN通过智能技术生成

先说结论:

ParameterizedType 意为参数化类型

一、何为参数化类型? 先看个例子

1、先定义一个待反射的对象,然后用 field.getGenericType() instanceof ParameterizedType 来判断字段是否是泛型类型

public class ReflectTestBean {
   
    List<String> list1;
    List list2;
    Map<String, Integer> map1;
    Map map2;
}
@Test
public void test() {
   
    Class<ReflectTestBean> cls = ReflectTestBean.class;
    Field[] fields = cls.getDeclaredFields();
    for (Field field : fields) {
   
        System.out.println(field.getName() + " 是否是泛型:" + (field.getGene
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: ParameterizedTypeJava 中的一个接口,它表示一个带有类型参数的类型。它可以用来描述复杂的泛型类型,如 List<String> 等。 ParameterizedType 接口有三个方法,分别返回泛型类型的原始类型(raw type)、参数类型(actual type arguments)和所属的类型(owner type)。在 Java 中,我们经常会使用 ParameterizedType 来获取泛型类型的信息,比如反射中的 TypeToken,或者 Json 解析库中的 TypeAdapter。 ### 回答2: ParameterizedTypeJava 中的一个接口,用于表示带有参数化的类型,也就是泛型类型。 在 Java 中,我们可以定义泛型类或泛型方法,在定义的时候可以使用类型参数(type parameter),这些类型参数可以是具体的类型,也可以是泛型类型。例如,我们可以定义一个泛型类List<T>来表示一个列表,其中的类型参数T可以是具体的类型,比如Integer或String,也可以是另一个泛型类型,比如List<Integer>。当我们实例化一个泛型类的对象时,可以指定具体的类型参数,比如List<Integer> list = new ArrayList<>()。 而ParameterizedType 就是用来表示带有参数化的类型的,在 Java 中,它是一个接口,继承自Type接口。ParameterizedType接口提供了一些方法来获取泛型类型的相关信息,比如获取原始类型(raw type)、获取所有的实际类型参数(actual type arguments)等。 通常情况下,当我们通过反射来获取一个泛型类型时,得到的是一个ParameterizedType的实例。通过ParameterizedType接口提供的方法,我们可以获取到该泛型类型的原始类型、实际类型参数等信息。比如,如果我们获取到了一个泛型类List<Integer>的Type类型,我们可以通过判断该Type是否是ParameterizedType类型,然后再通过ParameterizedType接口提供的方法来获取到List的原始类型(即List.class)和类型参数(即Integer.class)。 总之,ParameterizedType 是用来表示带有参数化的类型的接口,在Java中,泛型类或泛型方法的参数是使用类型参数来定义的,而ParameterizedType接口则是用来表示这些泛型类型的。通过ParameterizedType接口提供的方法,我们可以获取到泛型类型的原始类型和类型参数等相关信息。 ### 回答3: ParameterizedTypeJava语言中的一个接口,用于表示参数化类型,也就是带有泛型的类型。在Java中,使用泛型可以让我们编写更加通用、可复用的代码,因此ParameterizedType的作用就是表示这种带有泛型参数的类型。 ParameterizedType接口是Type的子接口,它有三个方法: - Type[] getActualTypeArguments():获取参数化类型的实际参数类型,返回一个Type数组。 - Type getRawType():获取参数化类型的原始类型,返回一个Class对象。 - Type getOwnerType():获取参数化类型的拥有者类型,如果该类型是一个嵌套类型,则返回其直接宿主。 举个例子来说,假设我们有一个ArrayList,这个List中的元素是String类型。那么这个ArrayList的类型就可以表示为ParameterizedType,其中getRawType()方法会返回ArrayList的原始类型,即Class对象;getActualTypeArguments()方法会返回长度为1的Type数组,数组中唯一的元素就是String类型;getOwnerType()方法返回null,因为ArrayList没有拥有者类型。 通过ParameterizedType,我们可以在运行时获取到参数化类型的具体信息,这对于编写一些通用的代码非常有用。例如,我们可以通过反射获取泛型类的实际参数类型,并根据这些类型进行相应的处理。 总之,ParameterizedTypeJava语言中用于表示带有泛型参数的类型的接口,它提供了获取实际参数类型、原始类型以及拥有者类型的方法。通过ParameterizedType,我们可以在运行时获取参数化类型的具体信息,从而编写更加通用、可复用的代码。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值