Thinking in Java 10.2 链接到外部类
功能:
过程:
- 定义接口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 链接到外部类相关推荐
- java内部类gc_Java内部类持有外部类的引用详细分析与解决方案
在Java中内部类的定义与使用一般为成员内部类与匿名内部类,他们的对象都会隐式持有外部类对象的引用,影响外部类对象的回收. GC只会回收没有被引用或者根集不可到达的对象(取决于GC算法),内部类在生命 ...
- java内部类为什么会持有外部类的引用_java中内部类为什么会持有外部类的引用?...
当我们分析内存泄漏的场景时,总会想到不能在内部类中做耗时操作,因为它会持有外部类的因为,导致外部类的实例在生命周期结束的时候没有办法及时释放,这就造成了内存泄漏. 好像这就是一个公理一样,就是人们说着 ...
- java内部类为什么会持有外部类的引用_为什么内部类持有外部类的引?
对普通类(没有内部类的类)来说,内部类和外部类都与他无关:对有内部类的类来说,它们就是其内部类的外部类,外部类是个相对的说法,其实就是有内部类的类.所以,要回答这个问题,只需要讲解内部类是什么:Jav ...
- Java和ABAP里的外部类和内部类
Java Outer class name + .this + outer class member name / method name ABAP It is possible to directl ...
- java的内部类和外部类_java内部类 和外部类的区别
下面说一说内部类(Inner Class)和静态内部类(Static Nested Class)的区别: 定义在一个类内部的类叫内部类,包含内部类的类称为外部类.内部类可以声明public.prote ...
- 内部类与外部类之间的访问
目 录 1.内部类与外部类 2.内部类的特点:内部类可以直接访问外部类的成员(成员变量和成员方法),包括私有成员. 3.内部类与外部类之间的访问 在测试类中调用成员内部类中的方法: ...
- JAVA修炼秘籍(番外篇)第二章:《图书馆管理系统》
往期: JAVA 修炼秘籍第一章:<痛苦的折磨> JAVA 修炼秘籍第二章:<逐渐魔化> JAVA 修炼秘籍第三章:<绝地反击> JAVA 修炼秘籍第四章:< ...
- 深入理解Java中为什么内部类可以访问外部类的成员
内部类简介 虽然Java是一门相对比较简单的编程语言,但是对于初学者, 还是有很多东西感觉云里雾里, 理解的不是很清晰.内部类就是一个经常让初学者感到迷惑的特性. 即使现在我自认为Java学的不错了, ...
- cxf springmvc_拥抱模块化Java平台:Java 10上的Apache CXF
cxf springmvc 自Java 9发布最终将Project Jigsaw交付给大众以来,已经过去了整整一年的时间. 这是一段漫长的旅程,但是在那里,所以发生了什么变化? 这是一个很好的问题,答 ...
- java内部类外部类_Java内部类:如何在内部类中返回外部类对象
Nasted Class 的介绍,请详见参考 今天讨论的不是不是内部类的概念,而是具体使用的一个场景-如何在内部类中返回外部对象 (孤猪:我在程序里也碰到过一次这样的状况,非静态内部类可以直接调用外部 ...
最新文章
- 滴滴开源支撑业务代码重构工具Rdebug
- java写一个外网访问的接口_【JAVA基础】一个案例搞懂类、对象、重载、封装、继承、多态、覆盖、抽象和接口概念及区别(中篇)...
- AIX系统maxuproc太小导致ORA-27300错
- MySQL 二进制日志(Binary Log)
- LeetCode 468. 验证IP地址
- 华为java 优招面试题_2017华为优招笔试题
- 使用C++控制台程序或Python调用Dll创建Qt界面(dll中创建QApplication,qtwinmigrate的使用)
- 初始DDD(领域驱动设计)
- java简单模拟实现数据库连接池
- SAP License:SAP MM配置中的一些常用的 TCODE
- Fixjs——显示交互基类InteractiveObject
- [转]C#综合揭秘——细说进程、应用程序域与上下文之间的关系
- IntelliJ IDEA 使用教程(2019图文版)
- 平面设计完全手册_工业时代的平面设计
- “磁碟机”病毒肆虐 数万电脑中招
- 谷歌Chrome浏览器就能远程控制安卓手机,电脑远程控制手机的快捷方法get!
- 2021年5月信息系统项目管理师真题基础知识1~32题
- 性感荷官在线发牌,真的靠谱吗?
- 一文简单了解互联网流量变现
- Zookeeper与统一配置管理
热门文章
- [置顶] Android代码-----检测手机耳机插拔
- silverlight:分享一个不错的自定义布局CollectionFlow(可用于制作相册的哦!)
- jQuery UI 拖动(Draggable) - 还原位置
- Android之Handler,举例说明如何更新UI
- SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEM...
- 4.Kong入门与实战 基于Nginx和OpenResty的云原生微服务网关 --- Kong 的基本功能
- 10.RabbitMQ实战 --- 监控
- 1.SRE:Google运维解密 --- 介绍
- 4. PSR-4 --- 自动加载
- 38. Element cloneNode() 方法