package com.learn.dp.iterator;/*** 支持泛型的ArrayList,我们自己可以写一个支持泛型的这样一个类* 我们往里面装的任何一个东西可以称之为Element,所以我用E来代表他* E代表的是一个具体的类型,当我们在这里写E的时候,把这里面所有的内容,* 和这个相关的全都写成E,你就发现我的这个接口就支持了泛型了,只需要* 把声明的地方改过来就可以,那么我们用它的时候怎么用呢,* * @author Leon.Sun**/
public class GenericArrayList<E> {Object[] objects = new Object[10];int index = 0;/*** 像现在这样一个ArrayList往里面装东西的时候,你都需要把它装成Object类型* 假如我们定义一下往里面可以装任何类型,并且我们在使用的时候可以指定任何类型,* * 我们先把这个地方改过来,* @param o*/public void add(E o) {if(index==objects.length) {Object[] newObjects = new Object[objects.length * 2];System.arraycopy(objects, 0, newObjects, 0, objects.length);objects = newObjects;}objects[index] = o;index++;}public int size() {return index;}/*** 直接在这里写一个测试方法*/public static void main(String[] args) {/*** 我加一个尖括号表示我要往里面加什么内容*/GenericArrayList<String> a = new GenericArrayList<String>();/*** 这个时候你会发现add方法的声明就变成String了* 就是你用String替换了这个E,所以里面包含了E的地方都替换成了String了,* add的时候我就不用转成Object了,直接写String就可以了,* 这个更好玩的地方就是往外拿,往外拿的时候就不用把object强制转换,* 只要直接拿出String来就行了,这就是泛型,你自己写个泛型也没那么难* 所以理解泛型是什么意思就OK了,在方面不要做太多的纠缠* 当你看到JDK带尖括号内容的时候,你就会知道这里面可以指定一个类型,* 他里面具体的类型就已经确定了我将来就不用转来转去了*/a.add("hello");}}

设计模式之_Iterator_05相关推荐

  1. 【Design pattern】设计模式思路总结(一)

    看了一周的设计模式,跟着小菜的思路走! 从简单工厂过渡策略,后面看的这几个模式都是在单一职责,开放--封闭原则,依赖倒转原则下不断的改进,采用模式写出的代码更容易扩展,维护! 比较容易懂. 装饰模式: ...

  2. GOF23设计模式(结构型模式)代理模式~

    代理模式应用场景十分广泛,随便一个框架都会用到,因此学好代理模式对后续框架学习是最基本的要素!!今天我们就来讲讲代理模式! 目录 1.简介 1. 核心作用 2. 角色分析 2. 应用场景 4. 分类 ...

  3. GOF23设计模式(创建型模式)工厂模式

    目录: 一:工厂模式的核心本质 二:关于面向对象的六大基本原则 三:工厂模式的三大类详解(代码示例,详细分析) 首先,上咱本GOF23所有工厂模式的分类表格!!! 创建型模式 单例模式.工厂模式.抽象 ...

  4. GOF23设计模式(创建型模式)单例模式

    目录: 一:单例模式的核心作用.常见应用场景 二:五种单例模式及其实现 三:关于反射和反序列化破解单例模式的漏洞,以及相应的解决方案 四:测试五种单例模式的效率 一:核心作用及常见应用场景: 核心作用 ...

  5. Python七大原则,24种设计模式

    七大设计原则: 1.单一职责原则[SINGLE RESPONSIBILITY PRINCIPLE]:一个类负责一项职责.  2.里氏替换原则[LISKOV SUBSTITUTION PRINCIPLE ...

  6. Java设计模式:单例模式

    学而时习,稳固而之心, 好久没有复习java的知识了,今天有空温习了单例模式,这里记录一下 单例模式是常见的设计模式的一种,其特点就是 指一个类只有一个实例,且该类能自行创建这个实例  , 保证一个类 ...

  7. 设计模式中的六大基本原则

    软件设计中的基本共识: 1,高内聚,低耦合:如果想使软件系统架构稳定,那么我们期望软件的各模块内元素结合的紧密,而模块之间的耦合度(关联性)越低越好.高内聚不仅体现在模块上,单独的类或方法也应该是内聚 ...

  8. JS中的7种设计模式

    第九章Refactoring to OOP Patterns 重构为OOP模式 7种设计模式: 1,模版方法模式(template method) 2,策略模式(strategy) 3,状态模式(st ...

  9. 设计模式之创建型汇总

    设计模式 创建型 工厂方法模式 定义:定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类,工厂方法让类的实例化推迟到子类中进行 使用场景: 创建对象需要大量重复的代码 客户端(应用层)不依 ...

最新文章

  1. 残差神经网络_什么是残差——一文让你读懂GBDT(梯度提升树)-和-Resnet-(残差网络)的原理...
  2. mysql为查询结果字段赋默认值
  3. mysql用户权限设置
  4. HDU 1254 推箱子 BFS
  5. 95. 费解的开关【二级制枚举】
  6. [SpringMVC]定义多个前缀映射的问题
  7. 开启算法编程之旅的准备工作——如何在Windows 上安装 Anaconda 和 PyCharm
  8. 请解决datagridview
  9. java基础知识总结(4)
  10. 人工智能导论测试题——第3章自动推理与专家系统
  11. avi格式如何转换成mp4格式
  12. wegame登录cf显示服务器人数已满,WeGame
  13. 调整物料的存货科目代码,会不会造成存货系统和总账对账不平?
  14. Injected script—web 自动化测试技术原理解析,以TestCafe为例
  15. html怎么打五角星符号怎么打,五角星符号怎么打,五角星符号大全
  16. (验证文件)validateJarFile...报错
  17. 这是病,得治,懂吗?
  18. Python 3 集合方法 add( )
  19. 计算机网络 ping中ttl,ping命令显示的TTL是什么意思?
  20. 【项目一、xxx病虫害检测项目】1、SSD原理和源码分析

热门文章

  1. Activiti 7.1.4 发布,业务流程管理与工作流系统
  2. Spring Cloud Alibaba迁移指南(四):零代码兼容 Api-Gateway
  3. lvs主从服务器转发风暴(广播风暴、大流量)
  4. Elasticsearch学习笔记1
  5. 43. ExtJs控件属性配置详细
  6. Python这么热,要不要追赶Python学习热潮?
  7. 《乐在C语言》一2.2 数据类型
  8. webservice ssl 2 下载webservice服务端所有的证书
  9. java cpu 占用高问题定位
  10. linux基础知识必掌握知识[自己原来上学总结的难免有错误,多谢指点]