java 获取泛型中存的数据
时间: 2023-08-16 10:03:39 浏览: 81
可以通过Java反射机制获取泛型中存储的数据。
首先获取泛型所在的类的Class对象,然后获取泛型类型的Type对象,最后通过Type对象获取泛型类型的实际类型参数。
示例代码如下:
```java
public class GenericTest<T> {
private T data;
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
public static void main(String[] args) {
GenericTest<String> test = new GenericTest<>();
test.setData("Hello World");
Class<?> clazz = test.getClass();
Type type = clazz.getGenericSuperclass();
ParameterizedType parameterizedType = (ParameterizedType) type;
Type actualType = parameterizedType.getActualTypeArguments()[0];
System.out.println(actualType);
}
}
```
在上面的示例代码中,我们首先创建了一个泛型类`GenericTest`,其中包含了一个泛型类型参数`T`和一个成员变量`data`,以及获取和设置`data`成员变量的方法。
在`main`方法中,我们首先创建了一个`GenericTest`对象,并将其类型参数设置为`String`类型,然后获取了`GenericTest`类的`Class`对象,并通过该对象获取了泛型类型的`Type`对象。接着,我们将`Type`对象转换为`ParameterizedType`对象,通过`getActualTypeArguments`方法获取了泛型类型实际的类型参数,最后打印出来。在本例中,输出结果为`class java.lang.String`,即泛型类型实际的类型参数为`String`类型。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)