栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java泛型:是否也可以在运行时保留有关泛型类型的任何元信息?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java泛型:是否也可以在运行时保留有关泛型类型的任何元信息?

当然,信息的一个类 通用的支持。

换句话说:当您反编译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。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/515490.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号