黑马程序员——泛型的总结
来源:互联网 发布:安装mysql步骤 编辑:程序博客网 时间:2024/04/30 10:15
泛型的定义:
泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的好处是安全简单。
泛型的好处:
泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。
泛型作用:
泛型是提供给java编译器使用的,可以限定集合中的输入类型,让编译器挡住源程序中的非法输入,编译器编译带类型说明的集合会去除掉“类型”信息,使程序运行
效果和原始类型完全一样,由于编译器生成的字节码会去除掉泛型的类型信息,只要能跳过编译器就可以往某个泛型集合中加入其它类型的数据,例如,用反射得到集合,再
调用其add方法即可。
ArrayList<Integer> arr = new ArrayList<Integer>();
arr.add(2);
arr.getClass().getMethod("add", Object.class).invoke(arr,"aine");
System.out.println(arr);
打印结果是:[2, aine]
参数化类型是不考虑继承的
Vector<String> v = new Vector<Object>() //错误
Vector<Object> v = new Vector(String>() //错误
Vector v1 = new Vector<String>() //正确
Vector<Object> v = v1 //正确
通配符
使用?通配符可以引用其它各种参数化的类型,?通配符定义的变量主要用作引用,可以调用此参数化无关的方法,不能调用与参数化有关的方法。
定义一个方法,此方法用于打印任意参数化类型的集合中的所有数据,如下:
public static void print(Collection<?> coll){
for(Object c:coll){
System.out.println(c);
}
//coll.add("String");//错误,因为它不知道自己未来自己一定匹配的是String
coll.size(); //正确,此方法与类型参数没关系
coll = new HashSet<Date>(); //正确,通配符?指向Date正确的
}
通配符的扩展
1,限定通配符的上边界:
正确:Vector<? extends Number> x = new Vector<Integer>();
错误:Vector<? extends Number> x = new Vector<String>();
2,限定通配符的下边界:
正确: Vector<? super Integer> x = new Vector<Number>();
错误:Vector<? super Integer> x = new Vector<Byte>();
自定义泛型方法
访问修饰符 [static] <泛型标识>泛型标识方法名称([泛型标识 参数名称]){方法体};
如果类中的多个方法要使用泛型,则泛型就要使用类级别的(就是泛型定义在类上)
----------------------<a href="http://edu.csdn.net/heima"target="blank">android培训</a>、<a href="http://edu.csdn.net/heima"target="blank">java培训</a>、期待与您交流! ----------------------
- 黑马程序员——泛型的总结
- 黑马程序员——Java泛型通配符的总结
- 黑马程序员—Java泛型总结
- 黑马程序员—泛型总结归纳
- 黑马程序员——前几天的总结
- 黑马程序员——静态的总结
- 黑马程序员—异常的总结
- 黑马程序员—分支语句的总结
- 黑马程序员——泛型基础总结
- 黑马程序员—泛型部分知识总结
- 黑马程序员-泛型总结
- 黑马程序员-泛型总结
- 黑马程序员---泛型总结
- 黑马程序员—java总结
- 黑马程序员—反射总结
- 黑马程序员__泛型的学习心得总结
- 黑马程序员_泛型知识的总结
- 黑马程序员有关枚举,反射,泛型的总结
- android 电话状态的监听(来电和去电)
- 简介Spring中常用的hql查询方法
- 注册JDBC驱动的三种方式
- 最简单的菜单导航--不兼容IE6
- 虚拟文件路径,轻松搞定某些软件对特殊文件路径不能识别问题
- 黑马程序员——泛型的总结
- sql server例子处理
- android代码格式化方法小结
- sed for <AAA>VALUE</AAA>
- How do you work out the sum of divisors?
- android 界面切换的方法
- 海量数据处理之一
- 教你作类似msn(QQ)等网页中窗口的拖动效果
- JAVA海量数据处理之二(BitMap)