首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

[JAVA]如何获取泛型类型化名称

获取泛型类型化名称的方法有两种:

  1. 使用反射获取泛型类型信息:在Java中,泛型类型在运行时会被擦除,无法直接获取泛型类型的名称。但是可以通过反射来获取泛型类型的信息。可以通过以下步骤来获取泛型类型化名称:
  • 首先,获取包含泛型类型的类的Class对象。
  • 然后,通过Class对象的getGenericSuperclass()方法获取包含泛型类型的父类的Type对象。
  • 接着,通过ParameterizedType接口的getActualTypeArguments()方法获取泛型类型的实际类型参数。
  • 最后,通过Type对象的getTypeName()方法获取泛型类型的名称。

例如,获取一个List<String>的泛型类型名称的示例代码如下:

代码语言:java
复制

import java.lang.reflect.ParameterizedType;

import java.lang.reflect.Type;

import java.util.List;

public class Main {

代码语言:txt
复制
   public static void main(String[] args) {
代码语言:txt
复制
       Type genericType = Main.class.getGenericSuperclass();
代码语言:txt
复制
       if (genericType instanceof ParameterizedType) {
代码语言:txt
复制
           ParameterizedType parameterizedType = (ParameterizedType) genericType;
代码语言:txt
复制
           Type[] actualTypeArguments = parameterizedType.getActualTypeArguments();
代码语言:txt
复制
           if (actualTypeArguments.length > 0) {
代码语言:txt
复制
               Type actualType = actualTypeArguments[0];
代码语言:txt
复制
               System.out.println(actualType.getTypeName());
代码语言:txt
复制
           }
代码语言:txt
复制
       }
代码语言:txt
复制
   }

}

代码语言:txt
复制

输出结果为:java.lang.String

  1. 使用TypeToken获取泛型类型信息:TypeToken是Gson库中提供的一个类,可以用于获取泛型类型的信息。可以通过以下步骤来获取泛型类型化名称:
  • 首先,创建一个继承自TypeToken的匿名内部类,并指定泛型类型。
  • 然后,通过getType()方法获取泛型类型的Type对象。
  • 最后,通过Type对象的getTypeName()方法获取泛型类型的名称。

例如,获取一个List<String>的泛型类型名称的示例代码如下:

代码语言:java
复制

import com.google.gson.reflect.TypeToken;

import java.lang.reflect.Type;

import java.util.List;

public class Main {

代码语言:txt
复制
   public static void main(String[] args) {
代码语言:txt
复制
       Type type = new TypeToken<List<String>>() {}.getType();
代码语言:txt
复制
       System.out.println(type.getTypeName());
代码语言:txt
复制
   }

}

代码语言:txt
复制

输出结果为:java.util.List<java.lang.String>

以上是获取泛型类型化名称的两种方法。这些方法可以帮助开发人员在需要获取泛型类型信息的场景中进行处理。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券