功能:
过程:

  • 定义接口Selector(end(),current(),next())
  • 类Sequence
    通过构造函数定义,Object数组大小
    定义添加Object方法
    私有内部类SequenceSelector 实现Selector
    定义生产SequenceSelector方法Selector
    主方法:定义一个10元素的Sequence,运用Selector输出

个人实现:

package thinking;interface Selector{Boolean end();//different-booleanObject current();void next();
}
public class Sequence {int i=0;//different-privateObject[] intems;public Sequence(int size) {intems = new Object[size];}public void add(Object obj){if(i<intems.length){intems[i++] = obj;}}//differentprivate class SequenceSelector implements Selector{@Overridepublic Boolean end() {if(i==0){return true;}else{return false;}}@Overridepublic Object current() {// TODO Auto-generated method stubreturn intems[intems.length-i];}@Overridepublic void next() {// TODO Auto-generated method stubi--;//different-未加判定}}public static void main(String[] args) {// TODO Auto-generated method stubSequence sequence = new Sequence(10);for(int i=0;i<10;i++){sequence.add(i);}//differentSequenceSelector sequenceSelector = sequence.new SequenceSelector();while (!sequenceSelector.end()) {System.out.println(sequenceSelector.current());sequenceSelector.next();}}}

原书实现:

package thinkingjava;interface Selector{boolean end();Object current();void next();
}
public class Sequence {private int next=0;private Object[] items;public Sequence(int size) {items = new Object[size];}public void add(Object obj){if(next<items.length){items[next++] = obj;}}private class SequenceSelector implements Selector{private int i = 0;@Overridepublic boolean end() {return i==items.length;}@Overridepublic Object current() {// TODO Auto-generated method stubreturn items[i];}@Overridepublic void next() {// TODO Auto-generated method stubif(i<items.length)i++;}}public Selector selector() {return new SequenceSelector();}public static void main(String[] args) {// TODO Auto-generated method stubSequence sequence = new Sequence(10);for(int i=0;i<10;i++){sequence.add(i);}Selector selector = sequence.selector();while (!selector.end()) {System.out.print(selector.current()+" ");selector.next();}}}

不同:见个人实现注释

Thinking in Java 10.2 链接到外部类相关推荐

  1. java内部类gc_Java内部类持有外部类的引用详细分析与解决方案

    在Java中内部类的定义与使用一般为成员内部类与匿名内部类,他们的对象都会隐式持有外部类对象的引用,影响外部类对象的回收. GC只会回收没有被引用或者根集不可到达的对象(取决于GC算法),内部类在生命 ...

  2. java内部类为什么会持有外部类的引用_java中内部类为什么会持有外部类的引用?...

    当我们分析内存泄漏的场景时,总会想到不能在内部类中做耗时操作,因为它会持有外部类的因为,导致外部类的实例在生命周期结束的时候没有办法及时释放,这就造成了内存泄漏. 好像这就是一个公理一样,就是人们说着 ...

  3. java内部类为什么会持有外部类的引用_为什么内部类持有外部类的引?

    对普通类(没有内部类的类)来说,内部类和外部类都与他无关:对有内部类的类来说,它们就是其内部类的外部类,外部类是个相对的说法,其实就是有内部类的类.所以,要回答这个问题,只需要讲解内部类是什么:Jav ...

  4. Java和ABAP里的外部类和内部类

    Java Outer class name + .this + outer class member name / method name ABAP It is possible to directl ...

  5. java的内部类和外部类_java内部类 和外部类的区别

    下面说一说内部类(Inner Class)和静态内部类(Static Nested Class)的区别: 定义在一个类内部的类叫内部类,包含内部类的类称为外部类.内部类可以声明public.prote ...

  6. 内部类与外部类之间的访问

    目           录 1.内部类与外部类 2.内部类的特点:内部类可以直接访问外部类的成员(成员变量和成员方法),包括私有成员. 3.内部类与外部类之间的访问 在测试类中调用成员内部类中的方法: ...

  7. JAVA修炼秘籍(番外篇)第二章:《图书馆管理系统》

    往期: JAVA 修炼秘籍第一章:<痛苦的折磨> JAVA 修炼秘籍第二章:<逐渐魔化> JAVA 修炼秘籍第三章:<绝地反击> JAVA 修炼秘籍第四章:< ...

  8. 深入理解Java中为什么内部类可以访问外部类的成员

    内部类简介 虽然Java是一门相对比较简单的编程语言,但是对于初学者, 还是有很多东西感觉云里雾里, 理解的不是很清晰.内部类就是一个经常让初学者感到迷惑的特性. 即使现在我自认为Java学的不错了, ...

  9. cxf springmvc_拥抱模块化Java平台:Java 10上的Apache CXF

    cxf springmvc 自Java 9发布最终将Project Jigsaw交付给大众以来,已经过去了整整一年的时间. 这是一段漫长的旅程,但是在那里,所以发生了什么变化? 这是一个很好的问题,答 ...

  10. java内部类外部类_Java内部类:如何在内部类中返回外部类对象

    Nasted Class 的介绍,请详见参考 今天讨论的不是不是内部类的概念,而是具体使用的一个场景-如何在内部类中返回外部对象 (孤猪:我在程序里也碰到过一次这样的状况,非静态内部类可以直接调用外部 ...

最新文章

  1. 滴滴开源支撑业务代码重构工具Rdebug
  2. java写一个外网访问的接口_【JAVA基础】一个案例搞懂类、对象、重载、封装、继承、多态、覆盖、抽象和接口概念及区别(中篇)...
  3. AIX系统maxuproc太小导致ORA-27300错
  4. MySQL 二进制日志(Binary Log)
  5. LeetCode 468. 验证IP地址
  6. 华为java 优招面试题_2017华为优招笔试题
  7. 使用C++控制台程序或Python调用Dll创建Qt界面(dll中创建QApplication,qtwinmigrate的使用)
  8. 初始DDD(领域驱动设计)
  9. java简单模拟实现数据库连接池
  10. SAP License:SAP MM配置中的一些常用的 TCODE
  11. Fixjs——显示交互基类InteractiveObject
  12. [转]C#综合揭秘——细说进程、应用程序域与上下文之间的关系
  13. IntelliJ IDEA 使用教程(2019图文版)
  14. 平面设计完全手册_工业时代的平面设计
  15. “磁碟机”病毒肆虐 数万电脑中招
  16. 谷歌Chrome浏览器就能远程控制安卓手机,电脑远程控制手机的快捷方法get!
  17. 2021年5月信息系统项目管理师真题基础知识1~32题
  18. 性感荷官在线发牌,真的靠谱吗?
  19. 一文简单了解互联网流量变现
  20. Zookeeper与统一配置管理

热门文章

  1. [置顶] Android代码-----检测手机耳机插拔
  2. silverlight:分享一个不错的自定义布局CollectionFlow(可用于制作相册的哦!)
  3. jQuery UI 拖动(Draggable) - 还原位置
  4. Android之Handler,举例说明如何更新UI
  5. SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEM...
  6. 4.Kong入门与实战 基于Nginx和OpenResty的云原生微服务网关 --- Kong 的基本功能
  7. 10.RabbitMQ实战 --- 监控
  8. 1.SRE:Google运维解密 --- 介绍
  9. 4. PSR-4 --- 自动加载
  10. 38. Element cloneNode() 方法