`
signingoff
  • 浏览: 81658 次
  • 性别: Icon_minigender_1
  • 来自: 福建
社区版块
存档分类
最新评论

java5如何得到泛型的类型参数

阅读更多
直接上代码:
父类:
import java.lang.reflect.ParameterizedType;
/**
 * 要得到T.class,必须要有一个子类
 * 
 *
 * @param <T>
 * @param <String>
 */
public class GenericTest<T,String> {
	Class<T> entityClass;

	/**
	 * 得到泛型参数的类型
	 * 
	 */
	public GenericTest() {
		
		ParameterizedType type = (ParameterizedType) this.getClass()
				.getGenericSuperclass();

		entityClass = (Class<T>) type.getActualTypeArguments()[1];
		System.out.println("type=="+type);
		System.out.println("entityClass=="+entityClass);
		System.out.println("getOwnerType=="+type.getOwnerType());
		System.out.println("getRawType=="+type.getRawType());
	}

	protected String getV() {
		return null;
	}
}


子类:
/**
 * T.class是不存在的,所以的不到<br>
 * 但是在父类中可以得到<Long, String>的具体类型。
 */

public class GenericTestChild<T> extends GenericTest<Long, String> {
	Class<T> clazz;

	public GenericTestChild() {

		// ---T.class是不存在的,所以下面的代码会有错误
		/**
		 * ParameterizedType type = (ParameterizedType) this.getClass()
		 * .getGenericSuperclass();
		 * 
		 * clazz = (Class<T>) type.getActualTypeArguments()[0];
		 * System.out.println("type==" + type);
		 * System.out.println("entityClass==" + entityClass);
		 * System.out.println("getOwnerType==" + type.getOwnerType());
		 * System.out.println("getRawType==" + type.getRawType());
		 */
	}

	public static void main(String args[]) {

		GenericTestChild<Long> gt = new GenericTestChild<Long>();

	}

}
分享到:
评论

相关推荐

    java 泛型类的类型识别示例

    综上所述,虽然Java泛型在编译后会进行类型擦除,但通过上述技巧,我们仍然能够在运行时获得关于泛型类实例化类型的一些信息。在实际开发中,这些方法可以帮助我们编写更加灵活和安全的代码。在示例文件`GenericRTTI...

    Java如何获取泛型类型

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

    java 带两个类型参数的泛型

    在Java编程语言中,泛型是一种强大的特性,它允许我们在类、接口和方法中使用类型参数,从而提高代码的灵活性和可复用性。当我们谈论“java带两个类型参数的泛型”时,这意味着我们正在处理一个泛型类或泛型方法,...

    Java泛型_Java中的泛型结构_

    Java泛型是Java编程语言中一个强大的特性,它允许在定义类、接口和方法时使用类型参数,从而实现参数化类型。泛型的主要目标是提高代码的类型安全性和重用性,减少类型转换的麻烦,并在编译时捕获可能的类型错误。...

    关于java基础的泛型的练习

    Java泛型是Java SE 5.0引入的一个重要特性,它极大地增强了代码的类型安全性和可读性。泛型在编程中的应用广泛,特别是在集合框架中,使得我们可以在编译时就检查类型,避免了不必要的类型转换,并且提高了代码的...

    Java中的泛型

    泛型是一种抽象概念,它允许你在定义类、接口或方法时使用类型参数。这些类型参数在编译时会被具体的实际类型替换。如果你定义了一个类`MyClass&lt;T&gt;`,这里的`T`就是一个类型参数。当你创建`MyClass`的一个实例时,你...

    Java集合框架及泛型

    4. **基本类型参数**: Java泛型不能直接接受基本类型(如int、char),但可以通过创建对应的包装类(如Integer、Character)来使用。 5. **协变与逆变**: 在泛型中,类型参数的使用会影响类型安全。比如,List是...

    java5泛型新特性 pdf

    8. **类型推断**:Java 5及后续版本提供了类型推断,编译器可以根据上下文自动推断类型参数,简化代码。例如,`List&lt;String&gt; list = new ArrayList();` 9. **泛型和枚举**:泛型也可应用于枚举类型,为每个枚举常量...

    Java泛型类型擦除后的补偿

    本文将深入探讨Java泛型类型擦除的概念,并介绍在类型擦除后,为了保持泛型的安全性和便利性,Java设计者所采取的一些补偿机制。 1. **类型擦除**: - 在编译期间,所有的泛型类型信息都会被替换为它们的实际类型...

    关于C#、java泛型的看法

    另一方面,Java的泛型类型擦除带来了一定的灵活性,使得旧的无泛型代码能够与新的泛型代码兼容,这对于维护大型遗留项目尤其有利。然而,这也意味着Java开发者需要额外注意类型转换的安全性,避免出现...

    Java中的泛型方法演示代码

    Java中的泛型是Java SE 5.0引入的一项重要特性,极大地增强了代码的类型安全性和重用...通过详细阅读和理解这些代码,开发者可以更好地掌握Java泛型方法的概念,并将其应用到自己的项目中,提高代码的灵活性和安全性。

    Java1.5泛型指南中文版

    泛型类是一种带有类型参数的类,这些类型参数在创建类的实例时由具体的类型来替代。例如,下面是一个简单的泛型类`Box`的例子: ```java public class Box&lt;T&gt; { private T content; public void setContent(T ...

    Java1.5泛型指南中文版(Java1.5Gene....pdf

    通配符是泛型类型参数的占位符,用于表示可变的类型参数。例如,`List&lt;? extends Number&gt;` 表示一个可以存储 Number 或其子类的列表。通配符可以分为bounded wildcards 和 unbounded wildcards 两种。 5. 泛型方法 ...

    java 多态的泛型实现

    泛型的基本语法是在尖括号中指定类型参数,如`List&lt;T&gt;`,其中`T`代表一个类型参数,我们可以用实际的类型替换它,如`List&lt;String&gt;`、`List&lt;Integer&gt;`等。 多态性和泛型结合的典型应用场景是集合框架。例如,当我们...

    JAVA-泛型课件-泛型课件

    泛型的类型参数可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口和泛型方法。 ### 泛型类 泛型类是指在定义类的时候引入类型参数。例如,标准库中的`ArrayList`就是一个泛型类,可以声明为`ArrayList&lt;T&gt;...

    java反射与泛型综合例子

    泛型是Java SE 5.0引入的新特性,它允许在定义类、接口和方法时使用类型参数,从而提高代码的类型安全性和可读性。泛型的主要优点是可以避免强制类型转换,并在编译时检查类型安全。例如,你可以定义一个泛型类`...

    java 一个关于泛型的简单例子

    泛型允许我们在类、接口和方法中使用类型参数,这样我们可以在编译时检查类型,避免了运行时类型转换的麻烦和潜在的ClassCastException风险。 在Java中,泛型的主要目的是为了实现参数化类型,这意味着我们可以创建...

Global site tag (gtag.js) - Google Analytics