Java 版 (精华区)
发信人: angle (finder), 信区: Java
标 题: 内 嵌 类 简 介(2)
发信站: 哈工大紫丁香 (Mon Jun 21 08:35:20 1999), 转信
2 如 何 使 用 内 嵌 类
我 们 以 BinarySearchTree 类 来 说 明 内 嵌 类 的 使 用。
import java.io.PrintStream;
import java.util.Enumeration;
import java.util.NoSuchElementException;
import java.util.Dictionary;
public class BinarySearchTree extends Dictionary {
BSTNode rootNode;
private int elementCount;
private ContainerOrganizer co;
/**
* Define an inner class to be the enumerator
*/
class BSTEnumerator implements Enumeration {
private BSTNode currentNode;
private boolean keys;
BSTEnumerator(BSTNode start, boolean doKeys) {
super();
currentNode = (start != null) ? start.min() : null;
keys = doKeys;
}
public boolean hasMoreElements() {
return (currentNode != null);
}
public Object nextElement() {
if (currentNode == null)
throw new NoSuchElementException();
BSTNode n = currentNode;
currentNode = n.successor();
return (keys ? n.key : n.payload);
}
}
当 在JDK1.1 中 编 译 上 面 的 类 时, 编 译 器 建 立
两 个 类 文件:BinarySearchTree.class 类 文 件 和
BinarySearchTree$BSTEnumerator.class 类文件。 注 意 类 名 中
有“$” 字 符, 它 把 内 嵌 类 从 包 含 它 的 基 本 类 中别 开来。
在 内 嵌 类BSTEnumerator 的 定 义 后 继 续 定 义
BinarySearchTree:
public BinarySearchTree(ContainerOrganizer c) {
super();
co = c;
co.setDict(this);
}
... and so on for the rest of the class ...
}
使 用 这 种 形 式 的 内 嵌 类 的 主 要 价 值 是 能 建
立 特 别 指 定枚 举 类, 并且 不 会 在 包 这 一 级 弄 乱 命 名 空
间。 考 虑 到 集 合 类 组 成 的 包 可 能有 许 多 不同 的 基 于
行 为 的 返 回 值( 如 枚 举, 有 序 列 表, 固 定 的 等 等),
具体 的 类 的数 目 可 能 很 大。 许 多 名 字 以 前 只 需 一 个
单 一 的 值。 当 然 完 全 可以 用 手 工来 完 成 这 些 命 名 空
间 的 维 护 工 作, 实 际 效 果 和 内 嵌 类 一 样; 这也 就 是
为什 么SUN 声 明 它 只 是 编 译 器 中 的 语 法 修 饰。
--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: www-post@bbs.hit.edu]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.694毫秒