Java泛型 - 能否取出Map<String, Integer>的泛型参数?
时间: 2023-07-08 11:04:32 浏览: 135
可以通过Java反射机制获取Map<String, Integer>的泛型参数类型。具体实现可以使用ParameterizedType接口,这个接口表示参数化类型,也就是泛型类型。以下是一个示例代码:
```
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.Map;
public class Demo {
public static void main(String[] args) {
Map<String, Integer> map = null;
// 获取map的泛型参数类型
Type type = map.getClass().getGenericSuperclass();
if (type instanceof ParameterizedType) {
// 获取泛型参数列表
Type[] types = ((ParameterizedType) type).getActualTypeArguments();
for (Type t : types) {
System.out.println(t);
}
}
}
}
```
输出结果为:
```
class java.lang.String
class java.lang.Integer
```
可以看到,获取到了Map<String, Integer>的泛型参数类型。其中,types数组中的每一个元素都表示一个泛型参数类型,可以通过getTypeName()方法获取其类型名称。
阅读全文