文档

Java™ 教程-Java Tutorials 中文版
问题和练习
Trail: Learning the Java Language
Lesson: Classes and Objects

问题和练习:嵌套类

问题

  1. 程序 Problem.java 无法编译。你需要做什么才能编译?为什么?

  2. 使用 Box 类的 Java API 文档(在 javax.swing 包中)可帮助你回答以下问题。

    1. Box 定义了什么静态嵌套类?

    2. Box 定义的内部类是什么?

    3. 什么是 Box 的内部类的超类?

    4. 你可以在任何类中使用哪个 Box 的嵌套类?

    5. 如何创建 BoxFiller 类的实例?

练习

  1. 获取文件 Class1.java。编译并运行 Class1。输出是什么?

  2. 以下练习涉及修改类 DataStructure.java,是 Inner Class Example 部分讨论的。

    1. 定义名为 print(DataStructureIterator iterator) 的方法。使用类 EvenIterator 的实例调用此方法,以便它执行与方法 printEven 相同的功能。

    2. 调用方法 print(DataStructureIterator iterator),以便打印具有奇数索引值的元素。使用匿名类作为方法的参数,而不是接口 DataStructureIterator 的实例。

    3. 定义名为 print(java.util.Function<Integer, Boolean> iterator) 的方法,该方法执行与 print(DataStructureIterator iterator) 相同的功能。使用 lambda 表达式调用此方法以打印具有偶数索引值的元素。使用 lambda 表达式再次调用此方法以打印具有奇数索引值的元素。

    4. 定义两个方法,以便以下两个语句打印具有偶数索引值的元素和具有奇数索引值的元素:

      DataStructure ds = new DataStructure()
      // ...
      ds.print(DataStructure::isEvenIndex);
      ds.print(DataStructure::isOddIndex);

检查一下你的答案。


Previous page: When to Use Nested Classes, Local Classes, Anonymous Classes, and Lambda Expressions
Next page: Enum Types