封装ArrayList
来源:互联网 发布:手机当作网络摄像头 编辑:程序博客网 时间:2024/06/01 10:42
转载请注明出处
http://blog.csdn.net/pony_maggie/article/details/44786233
ArrayList很好用,可以添加任意类型,动态增长,各种库函数支持,如下是个简单示例:
public class FillingList { /** * @param args * fill只会对已经存在空间填充,所以下面的for循环必不可少 */ public static void main(String[] args) { // TODO Auto-generated method stub List<String> list = new ArrayList<String>(); for (int i = 0; i < 10; i++) { list.add(""); } Collections.fill(list, "hello"); System.out.println(list); } }它存在一个问题,就是不知道add进来的类型。因为add方法本身接受的是Object类型,当我们取出来列表中的内容使用时,需要强制转换实际的类型,如下所示:
public static void main(String[] args) { ArrayList cats = new ArrayList(); for(int i = 0; i < 7; i++) { cats.add(new Cat(i)); } for(int i = 0; i < 7; i++) { ((Cat)cats.get(i)).print(); }如果程序员忘记了原来add进来的类型,然后在get的时候,转换成错误的实际类型了,就像下面这样,会怎样呢?
public class CatsAndDogs { /** * @param args */ public static void main(String[] args) { ArrayList cats = new ArrayList(); for(int i = 0; i < 7; i++) { cats.add(new Cat(i)); } cats.add(new Dog(7)); for(int i = 0; i < 7; i++) { ((Cat)cats.get(i)).print(); } for(int i = 0; i < cats.size(); i++) { ((Cat)cats.get(i)).print(); } //dog is detected at run time } }答案是编译没有问题,运行时才会报错。这样就会有很大的风险。
所以需要对ArrayList进行封装
public class AutoArrayList extends ArrayList{ private Class itemClass; public AutoArrayList(Class itemClass){ this.itemClass = itemClass; } public Object get(int index){ try{ while(index>=size()){ add(itemClass.newInstance()); } }catch(Exception e){ e.printStackTrace(); } return super.get(index); }}
阅读全文
0 0
- 封装ArrayList
- java之封装ArrayList
- 自己封装js的ArrayList类
- 解析XML文件,并封装成ARRAYLIST
- Arraylist中封装类的结构
- ArrayList封装对象实现多属性同一循环输出
- ArrayList封装对象实现多属性同一循环输出
- ArrayList
- ArrayList
- ArrayList
- ArrayList
- ArrayList
- ArrayList
- ArrayList
- ArrayList
- ArrayList
- ArrayList
- ArrayList
- java链接用户名密码mongodb
- java 私有属性加get/set方法跟直接把属性设置成public有区别吗?
- Implement queue with two stack 用两个堆实现队列
- java中new Class[]{Socket.class}写法的意思
- 学习设计模式的目标
- 封装ArrayList
- 阿里云媒体转码MTS使用教程
- Android Okhttp缓存:Cache,创建OkHttpClient实现(一)
- java源码修炼(一) equals和==
- 开山之作
- Tomcat启动时方法启动
- 欢迎使用CSDN-markdown编辑器
- Python 3.6 提示编码错误
- 现在可以看清了吗?