当然,信息的一个类 是 通用的支持。
换句话说:当您反编译ArrayList.class时,您会发现有关此类允许一个通用类型参数的事实的提示。换句话说:类文件包含 元
信息。使用反射,可以在运行时检查此元信息。
但是,当您有另一个使用某些
List<Integer>对象的类时-则在已编译的类中找不到有关该“列表使用整数”的信息-
除非您使用某些特定的模式(例如此处概述)。
因此,答案基本上是:对于几乎所有与实际相关的用例,“泛型” 仅是 编译时 。
例:
public class GenericsExample<T> { private T member; public T foo(T bar) { return member; }}现在运行:javap -p -c GenericsExample
Compiled from "GenericsExample.java"public class GenericsExample<T> { private T member; public GenericsExample(); Code: 0: aload_0 1: invokespecial #1 // Method java/lang/Object."<init>":()V 4: return public T foo(T); Code: 0: aload_0 1: getfield #2 // Field member:Ljava/lang/Object; 4: areturn }如您所见,反编译器了解该类使用该泛型类型T。



