gpt4 book ai didi

java - 实例化一个新的内部类需要关键字 'this'吗?

转载 作者:搜寻专家 更新时间:2023-10-31 08:26:41 25 4
gpt4 key购买 nike

Oracle Java SE 教程中的另一个示例。它工作正常,但我不确定在创建内部类的实例时是否/为什么需要“this”。无论我是否取出它,结果似乎都是一样的。

明确地说,我指的是: InnerEvenIterator iterator = this.new InnerEvenIterator();//不确定为什么要使用 'this'

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() {
// prints out the value of even indices in the array
InnerEvenIterator iterator = this.new InnerEvenIterator(); // not sure why using 'this'
while (iterator.hasNext()) {
System.out.println(iterator.getNext() + " ");
}
}

// inner class implements the Iterator pattern
private class InnerEvenIterator {
// start stepping through the array from the beginning

private int next = 0;

public boolean hasNext() {
// check if a current element is the last in the array
return (next <= SIZE - 1); // -1 b/c dealing with array's length.
}

public int getNext() {
// record a value of an even index of the array
int retValue = arrayOfInts[next];
// get the next even element
next += 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();
}
}

最佳答案

在这种情况下,您不需要 this.。但是,内部类必须始终使用封闭实例构造,因此 this. 只是让读者清楚这一点。

如果您不在 DataStructure 的非静态方法中(即,如果 this 不存在,或者不是 的实例>DataStructure),那么在创建 InnerEvenIterator 时,您必须实际指定 DataStructure 的实例:

InnerEvenIterator iterator = dataStructure.new InnerEvenIterator();

关于java - 实例化一个新的内部类需要关键字 'this'吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18306030/

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