获取带泛型的集合的全类名
时间: 2024-03-02 17:52:47 浏览: 28
要获取带泛型的集合的全类名,可以使用Java反射机制中的Type类。例如,对于一个List<String>类型的集合,可以通过如下代码获取它的全类名:
```
List<String> list = new ArrayList<>();
Type type = list.getClass().getGenericSuperclass();
String typeName = type.getTypeName();
System.out.println(typeName);
```
输出结果为:
```
java.util.ArrayList<java.lang.String>
```
相关问题
c#根据泛型获取泛型类名
可以使用 typeof 关键字获取泛型类型的 Type 对象,然后调用 Type.Name 属性即可获取泛型类名。
例如,假设有一个泛型类 GenericClass<T>,可以使用以下代码获取泛型类名:
```csharp
Type genericType = typeof(GenericClass<>);
string genericTypeName = genericType.Name;
```
这样,genericTypeName 的值就是 "GenericClass`1",其中 `1 表示泛型参数的数量。如果 GenericClass 有多个泛型参数,则 `1 应该改为相应的数字。
Java 获取泛型类名
在 Java 中,获取泛型类名可以使用反射机制中的 Type 类。下面是一个示例代码:
```java
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
public class Demo<T> {
public String getTypeName() {
Type t = getClass().getGenericSuperclass();
ParameterizedType pt = (ParameterizedType) t;
Type[] types = pt.getActualTypeArguments();
return types[0].getTypeName();
}
}
// 使用示例
class Main {
public static void main(String[] args) {
Demo<String> demo = new Demo<String>(){};
System.out.println(demo.getTypeName()); // 输出 java.lang.String
}
}
```
在 `getTypeName()` 方法中,首先使用 `getClass().getGenericSuperclass()` 获取当前类的带有泛型信息的父类,然后将其强制转换为 `ParameterizedType` 类型。接着,使用 `getActualTypeArguments()` 方法获取泛型类型参数数组,最后返回第一个泛型类型参数的类名。注意,在上面的示例中,我们使用了匿名内部类来创建 `Demo` 的实例,这是因为只有这样才能获取到带有泛型信息的父类。