java 泛型基础
来源:互联网 发布:mysql tar.gz安装 编辑:程序博客网 时间:2024/06/05 16:49
1. Java泛型编程是JDK1.5版本后引入的。泛型让编程人员能够使用类型抽象,通常用于集合里面。
List list = new ArrayList(); list.add("CSDN_SEU_Cavin"); list.add(100); for (int i = 0; i < list.size(); i++) { String name = (String) list.get(i); //取出Integer时,运行时出现异常 System.out.println("name:" + name); } 修改为 List<String> list = new ArrayList<String>();
2. 泛型只在编译阶段有效
7.泛型的好处
(1)类型安全。
通过知道使用泛型定义的变量的类型限制,编译器可以更有效地提高Java程序的类型安全。
(2)消除强制类型转换。
消除源代码中的许多强制类型转换。这使得代码更加可读,并且减少了出错机会。所有的强制转换都是自动和隐式的。
(3)提高性能。
8.泛型使用的注意事项
(1)泛型的类型参数只能是类类型(包括自定义类),不能是简单类型。
(2)泛型的类型参数可以有多个。
(3)不能对确切的泛型类型使用instanceof操作。如下面的操作是非法的,编译时会出错。
----
K ——键,比如映射的键。
V ——值,比如 List 和 Set 的内容,或者 Map 中的值。
E ——异常类。
T ——泛型。
要定义泛型方法,只需将泛型参数列表置于返回值之前- public <T> void f(T x){
- System.out.println(x.getClass().getName());
- }
不能创建泛型数组。一般的解决方案是任何想要创建泛型数组的地方都使用ArrayList:
9、泛型通配符‘?’怎么用?
可以解决当具体类型不确定的时候,这个通配符就是 ? ;当操作类型时,不需要使用类型的具体功能时,只使用Object类中的功能。那么可以用 ? 通配符来表未知类型。
10、泛型限定(上限和下限)的表达式是怎样的?
上限:?extends E:可以接收E类型或者E的子类型对象。
下限:?super E:可以接收E类型或者E的父类型对象。
上限什么时候用:往集合中添加元素时,既可以添加E类型对象,又可以添加E的子类型对象。为什么?因为取的时候,E类型既可以接收E类对象,又可以接收E的子类型对象。
下限什么时候用:当从集合中获取元素进行操作的时候,可以用当前元素的类型接收,也可以用当前元素的父类型接收。
12、什么时候用泛型?
当接口、类及方法中的操作的引用数据类型不确定的时候,以前用的Object来进行扩展的,现在可以用泛型来表示。这样可以避免强转的麻烦,而且将运行问题转移到的编译时期。
泛型的细节:
1)、泛型到底代表什么类型取决于调用者传入的类型,如果没传,默认是Object类型;
2)、使用带泛型的类创建对象时,等式两边指定的泛型必须一致;
原因:编译器检查对象调用方法时只看变量,然而程序运行期间调用方法时就要考虑对象具体类型了;
3)、等式两边可以在任意一边使用泛型,在另一边不使用(考虑向后兼容);
13、Java类库中的泛型有那些?
所有的标准集合接口都是泛型化的—— Collection<V>、List<V>、Set<V> 和 Map<K,V>。类似地,集合接口的实现都是用相同类型参数泛型化的,所以HashMap<K,V> 实现 Map<K,V> 等。
- Java基础 泛型基础
- java泛型基础
- java泛型基础
- Java泛型基础
- Java泛型基础
- java 泛型基础
- java 泛型基础
- Java:泛型基础
- Java泛型基础
- java泛型基础
- java泛型基础
- [ java ] java基础泛型!
- 【Java基础】泛型方法
- Java基础&增强 泛 型
- Java基础之泛型
- 泛型-Java泛型基础
- java基础之泛型
- java泛型之基础
- 【Java】动态代理
- 使用 jquery 的 ajax 进行接口化开发(获取验证码,注册)
- 架构师的必备素质和成长途径
- dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb3.4-redis3.2整合(六)Spring中Redis的缓存的使用
- 设计走过的坑
- java 泛型基础
- SMP CUP微博用户画像大赛解决方案
- 机器学习算法——KNN
- Cookie/Session机制详解
- C++前置式后置式递增和复合赋值操作符对程序性能
- CSS知识点
- 浅析Windows安全相关的一些概念
- 项目启动后开启定时任务方法-->TimerTask中如何调用service
- hdu—4576