具体参考这篇文章: http://rednaxelafx.iteye.com/blog/586212
Java泛型有这么一种规律:
位于声明一侧的,源码里写了什么到运行时就能看到什么;
位于使用一侧的,源码里写什么到运行时都没了。
具体例子:
import java.lang.reflect.Field;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.HashMap;
import java.util.Map;
public class GenericTest {
private Map<String, Integer> map = new HashMap<String, Integer>();
public static void main(String[] args) throws Exception {
Class<GenericTest> class1 = GenericTest.class;
Field mapField = class1.getDeclaredField("map");
Type mapMainType = mapField.getGenericType();
ParameterizedType parameterizedType = (ParameterizedType) mapMainType;
Type basicType = parameterizedType.getRawType();
System.out.println("基本类型为:" + basicType);
// 获取泛型类型的泛型参数
Type[] types = parameterizedType.getActualTypeArguments();
for (int i = 0; i < types.length; i++) {
System.out.println("第" + (i + 1) + "个泛型类型是:" + types[i]);
}
}
}
打印结果:
基本类型为:interface java.util.Map
第1个泛型类型是:class java.lang.String
第2个泛型类型是:class java.lang.Integer
分享到:
相关推荐
这是一个使用JAVA实现的泛型编程,分为两部分,第一部分创建泛型类,并实例化泛型对象,得出相加结果。 第二部分用户自行输入0--4,选择要进行的加减乘除运算或退出,再输入要进行运算的两个数,并返回运算结果及...
Java泛型在编译期之后就会把类型给擦除,在生成的Java字节代码中是不包含泛型中的类型信息的。使用泛型的时候加上的类型参数,会被编译器在编译的时候去掉。这就意味着,泛型只是对于编译期来说的,在执行期间是没有...
总之,Java泛型是现代Java开发中不可或缺的一部分,它提高了代码的质量和效率。通过理解和熟练运用泛型,开发者可以编写出更加健壮、易于维护的程序。在实践中,不断探索泛型的各种用法和边界条件,将有助于提升Java...
综上所述,Java泛型接口提供了强大的类型安全性,允许我们在接口中定义通用的方法,并在实现时指定具体的类型。通过类型参数约束、通配符、类型擦除和类型推断等机制,我们可以灵活地设计和使用泛型接口,提高代码的...
Java 泛型详解 Java 泛型是 Java SE 5.0 中引入的一项特征,它允许程序员在编译时检查类型安全,从而减少了 runtime 错误的可能性。泛型的主要优点是可以Reusable Code,让程序员编写更加灵活和可维护的代码。 ...
下面我们将深入探讨Java泛型方法的概念、语法以及使用示例。 **一、泛型方法概念** 泛型方法是一种具有类型参数的方法,这些类型参数可以在方法声明时指定,并在方法体内部使用。与类的泛型类似,它们提供了编译时...
6. **基本类型与泛型**:Java泛型不支持原始类型(如int、char)作为类型参数,但可以通过使用专门的通配符如`Integer[]`或`? extends Number`来间接实现。 7. **泛型和多态**:泛型类可以作为其他泛型类或非泛型类...
因此,泛型在运行时并不存在,所有关于泛型的操作都在编译期间完成。 2. **边界通配符**:在处理泛型时,我们经常遇到边界通配符,如`<? extends T>`和`<? super T>`。前者表示类型参数可以是T或T的任何子类型,后...
Java泛型是Java SE 5.0引入的一个重要特性,它极大地增强了代码的类型安全性和可读性。泛型在编程中的应用广泛,特别是在集合框架中,使得我们可以在编译时就检查类型,避免了不必要的类型转换,并且提高了代码的...
在Java中,泛型同样使用尖括号表示,但它的类型擦除特性使得编译后的字节码并不包含类型参数信息,而是使用Object或其他基础类型作为替代。这意味着Java的泛型不支持协变和逆变,但可以通过通配符(如?)来放宽类型...
### Java 泛型详解与应用 #### 一、什么是Java泛型? Java泛型(Generics)是一种在编译时确保类型安全的机制,它允许程序员编写类型安全的通用类或...总之,掌握Java泛型对于每一个Java开发者来说都是非常重要的。
栈的先进后出(FILO)操作并不依赖于栈中元素的具体类型,因此这里更适合使用泛型技术。这样,无论栈中存储的是整数、字符串还是自定义类型,都可以使用相同的算法进行操作,无需关心元素的具体类型。 ### Java中的...
在Java泛型出现之前,集合框架(如ArrayList、HashMap等)都是基于Object设计的,这导致了在存储和取出对象时需要进行强制类型转换。泛型的引入使得程序员在定义集合时就可以指定元素类型,编译器会在编译时进行类型...
虽然泛型在编译时提供了类型检查,但Java在运行时并不保留泛型信息,这是一个称为类型擦除的过程。因此,泛型主要用于编译时检查,而不是运行时。 7. **优势**: - **类型安全**:避免了在运行时进行类型转换,...
Java 泛型是一种强大的工具,它允许我们在编程时指定变量的类型,提供了编译时的类型安全。然而,Java 的泛型在运行时是被擦除的,这意味着在运行时刻,所有的泛型类型信息都会丢失,无法直接用来创建对象或进行类型...
Java泛型是Java编程语言中的一个关键特性,它在2004年随着JDK 5.0的发布被引入,极大地增强了代码的类型安全性和重用性。本篇文章将带你入门Java泛型,通过实例深入理解其核心概念。 1. **泛型的基本概念** - 泛型...