`
javan
  • 浏览: 57236 次
社区版块
存档分类
最新评论

获取泛型的类型

 
阅读更多

获取类的泛型类型

第一种方法:

 

public class ParameterDesc<T> {
	private final String _name;
	private Class<T> _type;
	
	public ParameterDesc(String name){
		this._name = name;
	}
	
	public String getName(){
		return _name;
	}
	
	@SuppressWarnings("unchecked")
	public Class<T> getType(){
		if(null == _type){
			TypeVariable[] tvs = getClass().getTypeParameters();
			Type tp = tvs[0].getBounds()[0];
			_type = (Class<T>)tp;
		}
		return _type;
	}
}

 第二种方法:

 

abstract class ParameterDesc<T> {
@SuppressWarnings("unchecked")
	public Class<T> getType() {
		Type type = getClass().getGenericSuperclass();
		if (type instanceof ParameterizedType) {
			ParameterizedType pType = (ParameterizedType) type;
			return (Class<T>) pType.getActualTypeArguments()[0];
		} else {
			return null;
		}
	}
}
 

 

分享到:
评论

相关推荐

    java * 反射工具类. 提供调用getter/setter方法, 访问私有变量, 调用私有方法, 获取泛型类型Class

    提供调用getter/setter方法, 访问私有变量, 调用私有方法, 获取泛型类型Class,java * 反射工具类. 提供调用getter/setter方法, 访问私有变量, 调用私有方法, 获取泛型类型Class,java * 反射工具类. 提供调用getter/...

    java 反射工具类. 提供调用getter/setter方法, 访问私有变量, 调用私有方法, 获取泛型类型Class

    提供调用getter/setter方法, 访问私有变量, 调用私有方法, 获取泛型类型Class, 被AOP过的真实类等工具函数.反射工具类. 提供调用getter/setter方法, 访问私有变量, 调用私有方法, 获取泛型类型Class, 被AOP过的真实...

    Java如何获取泛型类型

    Java 运行时如何获取泛型参数的类型 Java类型Type 之 ParameterizedType,GenericArrayType,TypeVariabl,WildcardType 从实现的接口获取泛型参数 定义一个泛型父类: public interface SuperClass { String ...

    Java 获取泛型的类型实例详解

    Java 中获取泛型的类型实例是指在 Java 语言中获取泛型类型的实例对象的类型信息,泛型是 Java 语言中的一种重要特性,允许在编译时检查类型安全,避免类型转换异常,但是在实际开发中,获取泛型的类型实例卻是一件...

    looly#hutool-site#泛型类型工具-TypeUtil1

    介绍获取方法的参数和返回值类型(包括Type和Class)获取泛型参数类型(包括对象的泛型参数或集合元素的泛型类型)方法首先我们定义一个类:public cla

    Spring 中优雅的获取泛型信息的方法

    Spring 中优雅的获取泛型信息的方法 在 Spring 框架中,获取泛型信息是非常重要的,在实际开发中经常会遇到这种情况。今天,我们来讨论如何在 Spring 中优雅地获取泛型信息。 第一种方法:通过反射获取泛型信息 ...

    654.652.JAVA基础教程_反射-获取运行时类的父类及父类的泛型(654).rar

    然而,由于类型擦除,运行时无法直接获取泛型类型参数。但是,我们可以通过检查方法或字段的签名来间接获取这些信息。 例如,假设我们有一个如下父类: ```java public class ParentClass&lt;T&gt; { private List&lt;T&gt; ...

    细细品味C#(泛型专题)

    - **2.2.3 获取泛型类型和使用相应的泛型版本替换 ArrayList** - **类型获取**:使用 `typeof(T)` 获取泛型类型。 - **替换 ArrayList**:由于 `ArrayList` 不是类型安全的,因此使用 `List&lt;T&gt;` 取代它可以减少...

    Java泛型的用法及T.class的获取过程解析

    Java泛型的用法及T.class的获取过程解析 Java泛型是Java编程语言中的一种重要特性,它允许开发者在编写代码时指定类型参数,从而提高代码的灵活性和可读性。本文将详细介绍Java泛型的用法 及T.class的获取过程解析...

    Java泛型类型擦除后的补偿

    - 反射API在泛型类型擦除后仍然能获取到泛型信息,这主要通过泛型类的类型参数的实际类型参数化实例(TypeToken)来实现。 - 这使得在运行时可以进行一些泛型相关的操作,如创建参数化的类实例。 总结来说,Java...

    java泛型技术之发展

    - **类型擦除**:泛型信息在运行时不可用,无法在运行时获取泛型类型。 - **不能实例化类型参数**:如 `new T()` 是不允许的。 - **原始类型与泛型**:原始类型(如int、double)不能直接用作类型参数,但可以...

    java 泛型类的类型识别示例

    3. **泛型方法和类型参数**:在泛型方法中,我们可以用类型参数来表示操作的类型,然后在方法内部使用`Class`对象来获取更多信息。例如: ```java public &lt;U&gt; void process(U value) { Class&lt;U&gt; valueType = ...

    java中获取泛型类的子类

    通过反射获得指定类的父类的泛型参数的实际类型

    Java1.5泛型指南中文版.doc

    这意味着泛型信息不会出现在运行时,因此在运行时无法获取泛型类型的信息。 ##### 6.3. 在老代码中使用泛型代码 在使用泛型类时,如果类的对象是由非泛型代码创建的,则需要使用通配符。 ```java List list = new ...

    Java 基础泛型.pdf

    - 无法在运行时获取泛型类型的原始类型信息,因为类型参数在运行时已被擦除。 - `instanceof`操作符不能用于泛型,因为泛型类型信息在运行时不可用。 8. **示例**: 如上所示的`Pair, U&gt;`类展示了如何定义一个...

    C#泛型专题

    **3.2 获取泛型类型和使用相应的泛型版本替换 ArrayList** 使用泛型版本的集合类如 `List&lt;T&gt;` 替换非泛型版本的 `ArrayList` 可以带来诸多好处: - **类型安全:**泛型集合类可以在编译时检查类型,防止类型转换...

    C#常用泛型类型.rar

    本资源"**C#常用泛型类型.rar**"提供了关于C#中两种最常见的泛型类型——`Dictionary, TValue&gt;`和`List&lt;T&gt;`的实例代码,这对初学者来说是极好的学习资料。下面将详细讲解这两个泛型容器以及它们在实际开发中的应用。...

    whlmpower#JavaNote#获取泛型参数的实际类型及反序列化1

    获取泛型参数的实际类型}//获取此类的父类的第一个泛型参数的实际类型对应于实际的类型PayResultHandler,其父类HPWallletCallBackH

    java泛型介绍

    1. **获取泛型类型**:以下代码展示了如何获取一个类型参数的实际类型: ```java private static Class getClass(Type type, int i) { if (type instanceof ParameterizedType) { // 处理泛型类型 return ...

Global site tag (gtag.js) - Google Analytics