关于arraylist 与泛型的概念
2016-01-07 16:44
225 查看
在java的学习过程中,我们可以看到很多很多类似Arraylist<T>这样的结构出现,那么Arraylist类到底和泛型有什么关系呢?
今天在这里小做总结一下:
1,什么叫“泛型” 具体可参考博客:http://www.cnblogs.com/lwbqqyumidi/p/3837629.html
2, 什么时arraylist,具体可以参考:http://blog.csdn.net/jinuxwu/article/details/6771121
这里我是这么总结的:类,对象,方法均可以有一个代表类型的形参,可以用T,E,V等表示。形参顾名思义只是一个形式,一个泛型,没有具体的实际类型参数。
所以这些用T,E,V等参数模糊代表类型的类,对象,方法。我们就叫做泛型。等到我们传入具体的实际类型参数(及实参)给这些类,对象方法时。它们就有了指定的类型。(注意我们平常见到的一些package中的类,它们都不是泛型,因为类,对象,方法都有具体的类型)。
举个例子:下面的ArrayList类就是一个泛型,进去它的实现方法中,我们可以看到
public class ArrayList<E> extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable
{
private static final long serialVersionUID = 8683452581122892189L;
private transient Object[] elementDat
................
}
E代表形参,表示arraylist是一个泛型。我们不传入具体的实参时,则可以存储任何类型的内容到arraylist中eg:ArrayList List = new ArrayList(); (但注意,这样会导致读取内容时抛出异常)。
所以我们在使用arraylist时,一般给它指定具体的实际类型eg:ArrayList<String> list = new ArrayList<String>()
今天在这里小做总结一下:
1,什么叫“泛型” 具体可参考博客:http://www.cnblogs.com/lwbqqyumidi/p/3837629.html
2, 什么时arraylist,具体可以参考:http://blog.csdn.net/jinuxwu/article/details/6771121
这里我是这么总结的:类,对象,方法均可以有一个代表类型的形参,可以用T,E,V等表示。形参顾名思义只是一个形式,一个泛型,没有具体的实际类型参数。
所以这些用T,E,V等参数模糊代表类型的类,对象,方法。我们就叫做泛型。等到我们传入具体的实际类型参数(及实参)给这些类,对象方法时。它们就有了指定的类型。(注意我们平常见到的一些package中的类,它们都不是泛型,因为类,对象,方法都有具体的类型)。
举个例子:下面的ArrayList类就是一个泛型,进去它的实现方法中,我们可以看到
public class ArrayList<E> extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable
{
private static final long serialVersionUID = 8683452581122892189L;
private transient Object[] elementDat
................
}
E代表形参,表示arraylist是一个泛型。我们不传入具体的实参时,则可以存储任何类型的内容到arraylist中eg:ArrayList List = new ArrayList(); (但注意,这样会导致读取内容时抛出异常)。
所以我们在使用arraylist时,一般给它指定具体的实际类型eg:ArrayList<String> list = new ArrayList<String>()
相关文章推荐
- Core Data 多线程时多个context使用
- Baxter机器人---Hello_baster(二)
- 图解SQL的各种连接(Inner join,outer join,left join,right join)
- 弹性盒子布局flex, box-sizing: border-box
- 在Imac上安装nginx
- cstring转const char*
- <div>标签嵌套多层如何找准位置
- 一次简单的分析手机APK病毒木马
- SQL Server 2012 创建操作员
- mysql group by 用法解析(详细)
- 2016-1-7-Thingking in Java 读书笔记(三)--操作符
- 每天一个Linux之head命令
- qt tableview代理1
- 点击键盘的 next 按钮,在不同的 textField 之间换行
- hidden symbol ... is referenced by DSO 解决办法
- Android apk动态加载机制的研究
- it 技术网站
- Java高级工程师面试题目汇集(关于Struts,Spring,Hibernate三大框架的面试)
- iOS学习笔记56(Runtime)-Objective-C Runtime 运行时之六:拾遗
- C#实现每隔一段时间执行代码(多线程)