ThinkInJava_10_内部类

10.1 创建内部类

public class Parcel2 {
   
	class Contents {
   }
	class Destination {
   }
	public Destination to() {
   
		return new Destination();
	}
	public Contents contents() {
   
		return new Contents();
	}
	public static void main(String[] args) {
   
		Parcel2 p = new Parcel2();
		Parcel2.Contents c = p.contents(); //外部类名.内部类名
		Parcel2.Destination d = p.to(); //Outer.Inner
	}
}
//从外部类的非静态方法之外的任意地方创建内部类对象
//外部类名.内部类名
//Outer.Inner

10.2 链接到外部类

  • 生成一个内部类对象时,此对象与制造它的外部类对象就有了一种联系,它能访问外部类对象的所有成员
  • 下面这个类使用了迭代器设计模式
    将一个迭代器作为一个固定长度数组类的迭代器
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 < item.length)
			item[next++] = x;
	}
	//内部类 SequenceSelector
	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 SequenceSelector 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(
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值