gpt4 book ai didi

java - Oracle 内部类示例

转载 作者:行者123 更新时间:2023-11-30 08:08:59 25 4
gpt4 key购买 nike

我不明白这一行:

interface DataStructureIterator extends java.util.Iterator<Integer> { } 

既然 DataStruteIterator 和迭代器之间没有区别,我们不能删除这一行并改为:

private class EvenIterator implements java.util.iterator<Integer> { //code goes here}

我错过了什么?

public class DataStructure {

// Create an array
private final static int SIZE = 15;
private int[] arrayOfInts = new int[SIZE];

public DataStructure() {
// fill the array with ascending integer values
for (int i = 0; i < SIZE; i++) {
arrayOfInts[i] = i;
}
}

public void printEven() {

// Print out values of even indices of the array
DataStructureIterator iterator = this.new EvenIterator();
while (iterator.hasNext()) {
System.out.print(iterator.next() + " ");
}
System.out.println();
}

interface DataStructureIterator extends java.util.Iterator<Integer> { }

// Inner class implements the DataStructureIterator interface,
// which extends the Iterator<Integer> interface

private class EvenIterator implements DataStructureIterator {

// Start stepping through the array from the beginning
private int nextIndex = 0;

public boolean hasNext() {

// Check if the current element is the last in the array
return (nextIndex <= SIZE - 1);
}

public Integer next() {

// Record a value of an even index of the array
Integer retValue = Integer.valueOf(arrayOfInts[nextIndex]);

// Get the next even element
nextIndex += 2;
return retValue;
}
}

public static void main(String s[]) {

// Fill the array with integer values and print out only
// values of even indices
DataStructure ds = new DataStructure();
ds.printEven();
}
}

最佳答案

是的,你说得对;对于大多数目的,您可以取消 DataStructureIterator并使用Iterator<Integer>直接。

定义DataStructureIterator像这样创建 Iterator<Integer> 的简写符号,但这是一个非常糟糕的速记。例如,它根本不像 C 中的 typedef。

您可以分配任何实现 DataStructureIterator 的对象至Iterator<Integer> ,但您不能分配所有实现 Iterator<Integer> 的对象至DataStructureIterator .

因此,尽管定义这样的空接口(interface)是合法的,但没有多大意义。这可能会导致困惑。

关于java - Oracle 内部类示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30678336/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com