博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
对java中泛型的理解
阅读量:6002 次
发布时间:2019-06-20

本文共 1323 字,大约阅读时间需要 4 分钟。

hot3.png

1. 所有反射的操作都是在运行时的,一般程序会采取去泛型化的操作。

也就是说Java中的泛型只是在编译阶段有效,在编译过程中,正确检验泛型结果后,会将泛型的相关信息抹掉,并且在对象进入和离开方法的的时候添加类型检查和类型转换的方法,通俗的说就是成功编译过后的class文件中是不包含任何泛型信息的。

List
list = new ArrayList
();list.add("String");Class clazz = list.getClass();try { Method method = clazz.getMethod("add",Object.class); method.invoke(list,100);} catch (IllegalAccessException e) { e.printStackTrace();} catch (InvocationTargetException e) { e.printStackTrace();}System.out.println(list); //结果是:[String, 100]

这个例子绕过了编译,也就是绕过了泛型。

2.

class FX
{ private T ob; public FX(T ob) { this.ob = ob; } public T getOb() { return ob; } public void setOb(T ob) { this.ob = ob; }}
//通配符     FX
ex_num = new FX
(100); FX
ex_int = (FX
) getDate(ex_num); getDate(ex_int); getDate(ex_num); } /** * 通配符 *//* public static FX
getDate(FX
temp){ System.out.println(temp.getOb()); return temp; }*/ public static FX
getDate(FX
temp){ System.out.println("class type:" + temp.getClass()); return temp; }

限定通配符:FX<? extends T>  类型必须是T类型或者T的子类; FX<? super T>类型必须是T类型或者T 的父类。

非限定通配符:FX<?> 可以用任意类型来替代。

转载于:https://my.oschina.net/u/3738404/blog/1931607

你可能感兴趣的文章
豆瓣商业化:小清新文艺范必须远离铜臭?
查看>>
ul li列表元素浮动导致border没有底边解决办法
查看>>
leetcode — longest-substring-without-repeating-characters
查看>>
文件操作
查看>>
1.3 IDAE安装GO插件
查看>>
20172303 2017-2018-2 《程序设计与数据结构》第10周学习总结
查看>>
11个强大的Visual Studio调试小技巧
查看>>
Servlet的url-pattern匹配规则详细描述
查看>>
AndroidManifest.xml
查看>>
Matrix Power Series
查看>>
WPF中的平移缩放和矩阵变换(TranslateTransform、ScaleTransform、MatrixTransform)
查看>>
Interpolator
查看>>
PHP 汉字 转换成 拼音
查看>>
CSS的六种定位模型
查看>>
移动语音引擎相关开发笔记
查看>>
oracle本机登录不上dba的权限不足错误
查看>>
Cow Bowling
查看>>
eclipse4.5.2搭建javaee环境
查看>>
Linux操作系统入门教程
查看>>
Toggle Checkboxes on/off
查看>>