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毫秒