用Java实现Iterable
我有以下代码用Java实现Iterable,java,iterator,Java,Iterator,我有以下代码 public class A extends Iterable<Integer> { ... public Iterator<Integer> iterator() { return new Iterator<Integer>() { A a; public boolean hasNext() { ... }
public class A extends Iterable<Integer> {
...
public Iterator<Integer> iterator() {
return new Iterator<Integer>() {
A a;
public boolean hasNext() {
...
}
public Integer next() {
...
}
public void remove(){
...
}
};
公共类A扩展了Iterable{
...
公共迭代器迭代器(){
返回新的迭代器(){
A A;
公共布尔hasNext(){
...
}
公共整数next(){
...
}
公共空间删除(){
...
}
};
我想用调用迭代器方法的实例初始化匿名类中的“a”字段。可能吗
谢谢。你不需要
您可以在外部类上调用方法,通常在内部类中调用。编译时,编译器将自动生成一个隐藏字段,其中包含对外部类的引用 要自己引用此变量,可以编写
A.this
(A.this
是编译器生成的字段,相当于A
字段)您不需要这样做
您可以在外部类上调用方法,通常在内部类中调用。编译时,编译器将自动生成一个隐藏字段,其中包含对外部类的引用 要自己引用此变量,可以编写
A.this
(A.this
是编译器生成的字段,与A
字段等效)尝试以下操作:
public class A extends Iterable<Integer> {
public Iterator<Integer> iterator() {
final A a = this;
return new Iterator<Integer>() {
public boolean hasNext() {
// here you can use 'a'
}
}
}
}
公共类A扩展了Iterable{
公共迭代器迭代器(){
最终A=此;
返回新的迭代器(){
公共布尔hasNext(){
//在这里你可以用“a”
}
}
}
}
试试这个:
public class A extends Iterable<Integer> {
public Iterator<Integer> iterator() {
final A a = this;
return new Iterator<Integer>() {
public boolean hasNext() {
// here you can use 'a'
}
}
}
}
公共类A扩展了Iterable{
公共迭代器迭代器(){
最终A=此;
返回新的迭代器(){
公共布尔hasNext(){
//在这里你可以用“a”
}
}
}
}
使用:
A a = A.this
使用:
错。他想要外部的
this
。它的表述方式是外部的“this”。如果您在方法iterator()中,并且您要求使用“this”(正如我所写的),那么它指的是iterator()的对象是一个方法。因此“a”指的是类型为“a”的对象。错误。他想要外部的this
。它的表述方式是外部的“this”。如果你在方法迭代器()中,并且你要求“this”(如我所写),它指的是迭代器()所属的对象是一个方法。因此“a”是指“a”类型的对象。它应该是a implements Iterable
。它应该是a implements Iterable
。