(这一系列的文章代码均摘自thingking in java,之后就不再另外声明了,感谢 thinking in java)
之前在别人的代码里面见过内部类,但是一直疑惑,为什么会有内部类这个东西,在我看来在Class里面定义几个属性和函数也没什么区别呀。
今日开始翻thinking in java,就直奔此章节去了。
//: innerclasses/Parcel1.java
// Creating inner classes. public class Parcel1 { class Contents { private int i = 11; public int value() { return i; } } class Destination { private String label; Destination(String whereTo) { label = whereTo; } String readLabel() { return label; } } // Using inner classes looks just like // using any other class, within Parcel1: public void ship(String dest) { Contents c = new Contents(); Destination d = new Destination(dest); System.out.println(d.readLabel()); } public static void main(String[] args) { Parcel1 p = new Parcel1(); p.ship("Tasmania"); } } /* Output: Tasmania *///:~
这算做内部类最基本的用法了,看到这里还是觉得,内部类真是不知道有什么用。
但是,当看到下一个用法-“链接到外部类”,突然有点明白了
//: innerclasses/Sequence.java
// Holds a sequence of Objects. interface Selector { boolean end(); Object current(); void next(); } public class Sequence { private Object[] items; private int next = 0; public Sequence(int size) { items = new Object[size]; } public void add(Object x) { if(next < items.length) items[next++] = x; } private class SequenceSelector implements Selector { private int i = 0; public boolean end() { return i == items.length; } public Object current() { return items[i]; } public void next() { if(i < items.length) i++; } } public Selector selector() { return new SequenceSelector(); } public static void main(String[] args) { Sequence sequence = new Sequence(10); for(int i = 0; i < 10; i++) sequence.add(Integer.toString(i)); Selector selector = sequence.selector(); while(!selector.end()) { System.out.print(selector.current() + " "); selector.next(); } } } /* Output: 0 1 2 3 4 5 6 7 8 9 *///:~
看完这段,突然就想起了迭代器。这样一写,将数组的存储写入和读取良好的分隔了开来,同时两者之间又有一定的关系关联着。对于Selector,别的类也可以按照自己的方式来实现它,代码的通用性瞬间加强了。到此,才觉得,内部类用好了,绝对精妙呀,绝对不是之前所理解的代码的组合。
他人blog参考:http://blog.csdn.net/historyasamirror/article/details/6049073
相关推荐
标签 "33s,co/7thj not_yet thj-456" 可能是对该项目的关键词描述,"33s,co/7thj" 可能是网站的URL或代码仓库的链接,"not_yet" 暗示项目处于未完成状态,"thj-456" 可能是项目的内部标识符或者是版本号。...
这篇实训报告详细记录了THJ-3型高级过程对象系统实验装置中,关于DCS(集散控制系统)的实训过程,主要涉及了MACS组态软件的使用、系统配置和控制策略的实施。实训旨在让学生熟悉DCS的构成,掌握组态软件的应用,...
通常,Java程序会包含多个类文件,这些类文件可能会被组织在不同的包(package)中,每个类文件负责处理特定的逻辑,如输入解析、线性规划模型构建、单纯形法的迭代计算以及结果展示等。 在实际应用中,线性规划的...
1. **全面覆盖课程内容**:THJ-2型系统涵盖了从基本的单回路控制到复杂的比值控制、解耦控制等多种控制方式,满足不同层次的学习需求。 2. **高度仿真性**:该系统使用真实的工业设备作为实验平台,提高了实验的真实...
接下来,我将详细讲解在编程中如何实现这些功能,以及与之相关的知识点。 在编程中,处理超链接和电子邮件通常涉及网络编程和用户界面设计。下面我们将分别探讨这两个主题: 1. **超链接(Hyperlinks)** 超链接...
1、FM17520模拟SPI接口IC读写器板图工程源文件,包含PCB文件、原理图文件、物料清单文件,使用AD10打开。 2、该板尺寸30mm*65mm,主控STC8F2K08S2,使用TTL串口或RS232串口连接控制,各位可做参考。 3、可私信或QQ...
LG GR-C2075THJ电冰箱使用说明书.LG GR-C2075THJ电冰箱使用说明书.LG GR-C2075THJ电冰箱使用说明书.LG GR-C2075THJ电冰箱使用说明书.LG GR-C2075THJ电冰箱使用说明书.
品管七大手法讲解thj2080.pptx
JJ-THJ-B-Y01.SLDPRT
【标题】"Thj.rar_bar487_通讯/手机编程"揭示了这是一个与通讯和手机编程相关的资源包,特别是针对Symbian操作系统的。Symbian曾是智能手机上广泛使用的操作系统,尤其在功能手机时代,它为开发打电话程序等应用提供...
控制技术与系统课程实验指导书(THJ).doc
标题“thj.zip_USB编程_make9ce”暗示了这个压缩包包含了有关USB编程以及与“make9ce”相关的技术信息。然而,描述中提到的是UMTS(第三代移动通信)系统无线网络结构和协议的长期演进,以及与中国移动专家关于UMTS...
1. 特性要因图(又称鱼骨图或石川图):这是一种用于探索问题与可能原因之间关系的图形工具,由日本质量管理专家石川馨博士提出。通过4M1E(人、机、料、法、环)或5W1H(What、Where、When、Who、Why、How)方法,...
在EiceDRIVER的应用中,这个系数用于估算芯片内部的结温(Tj),因为结温过高可能导致器件性能下降,甚至损坏。结温的准确监测有助于预防过热,从而提高系统寿命和稳定性。 文档中可能涵盖了以下关键点: 1. **热...
这款电容器的独特之处在于它能在高达200°C的工作温度下连续工作,并且能保持良好的性能表现。这是一项重大的技术创新,因为大多数电子元件在这样的高温环境下往往会出现性能下降甚至失效。 THJ 200C系列提供了两个...
我们研究了在14 TeV高光度LHC(HL-LHC)的pp→t(→ℓνℓb)h(→γγ)j通道中非标准顶部Yukawa耦合的可观察性。 当顶部-希格斯相互作用的CP违反相ξ非零时,小双光子的分支比增加。 当top-Higgs相互作用的模量...
在文档中出现了“d:\thj1Access2000”和“D:\thj.mdb”,这些可能是对数据库文件存放位置的说明,提示用户在d盘的thj1文件夹下查找Access 2000数据库文件。 9. 数据库安全和维护: 文档中出现的“***/+”等字符...
项目名称为THJ集合便捷网络公司,主要提供信息咨询、产品销售和生活小窍门等服务,目标客户群初期定位为杭州市拱墅区周边的大学生,后期扩展至全市高校园区的学生。为了实现项目的成功,关键因素包括建立品牌信誉,...
在具有T奇偶校验的最小... 通过执行快速检测器仿真,我们发现在选定通道中进行的thj搜索可以排除在14 TeV LHC下具有2σ置信度的情况A(情况B)的最大伙伴质量mT +高达805(857)GeV,并且具有集成的发光度 L = 3ab-1。
1. THJ-2型高级过程控制系统实验装置 2. 计算机及配套软件 3. 万用电表 **三、实验原理** 单容水箱的被控制量是液位H,控制量是流入水箱的流量Q1。在静态平衡时,Q1等于流出的流量Q2。动态情况下,根据物料平衡关系...