问题与练习:嵌套类

Questions

  • 程序Problem.java无法编译。您需要做什么才能使其编译?为什么?

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

  • Box定义什么静态嵌套类?

    • Box定义什么内部类?

    • Box的内部类的超类是什么?

    • 您可以在任何类别中使用Box的嵌套类别中的哪一个?

    • 如何创建BoxFiller类的实例?

Exercises

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

  • 以下练习涉及修改内部类示例部分讨论的DataStructure.java类。

  • 定义一个名为print(DataStructureIterator iterator)的方法。使用类EvenIterator的实例调用此方法,使其执行与方法printEven相同的功能。

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

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

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

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

检查一下你的答案。