Java泛型 - 能否取出Map<String, Integer>的泛型参数?
时间: 2023-07-08 15:04:32 浏览: 50
考场1 | 考场2 | 考场3 | 考场4 |
| 82 | 考场1 | 考场2 | 考场3 | 考场4 |
| 83 | 考场1 | 考场2 |可以,使用Java的反射机制可以取出Map<String, Integer>的泛型参数。具体代码如下:
``` 考场3 | 考场4 |
| 84 | 考场1 | 考场2 | 考场3 |java
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
Type type = map.getClass(). 考场4 |
| 85 | 考场1 | 考场2 | 考场3 | 考场4 |
getGenericSuperclass();
if (type instanceof ParameterizedType) {
ParameterizedType parameterizedType = (ParameterizedType) type| 86 | 考场1 | 考场2 | 考场3 | 考场4 |
| 87 | 考;
Type[] typeArguments = parameterizedType.getActualTypeArguments();
for (Type typeArgument : typeArguments) {
System场1 | 考场2 | 考场3 | 考场4 |
| 88 | 考场1 | 考.out.println(typeArgument);
}
}
}
}
```
输出结果为:
```
class java.lang.String
class java.lang.Integer
```
其中,`getClass().getGenericSuperclass()`方法用于获取当前对象所在类的父类,即Map类场2 | 考场3 | 考场4 |
| 89 | 考场1 | 考场2 | 考,再通过`instanceof`判断Map类是否为参数化类型(即是否有泛型参数),如果是,则通过`getActualTypeArguments()`方法获取泛型参数的类型。