Добрый день!
Возник вопрос, связанный с использованием ключевого слова this в примере из книги Брюса Эккеля "Thinking in Java". Пример соответствует главе про Generics, однако вопрос связан именно с использованием this. Видимо, я немного упустил про это. Пример следующий:
import java.util.*;
public class IterableFibonacci extends Fibonacci implements Iterable<Integer> {
private int n;
public IterableFibonacci(int count) { n = count; }
public Iterator<Integer> iterator() {
return new Iterator<Integer>() {
public boolean hasNext() { return n > 0; }
public Integer next() {
n--;
return IterableFibonacci.this.next();
}
public void remove() {
// Not implemented
throw new UnsupportedOperationException();
}
};
}
public static void main(String[] args) {
for(int i : new IterableFibonacci(18))
System.out.print(i + " ");
}
}
Fibonacci:
import net.mindview.util.*;
public class Fibonacci implements Generator<Integer> {
private int count = 0;
public Integer next() {
return fib(count++);
}
private int fib(int n) {
if(n < 2)
return 1;
return fib(n-2) + fib(n-1);
}
public static void main(String[] args) {
Fibonacci gen = new Fibonacci();
for(int i = 0; i < 18; i++)
System.out.print(gen.next() + " ");
}
}
Generator:
package net.mindview.util;
public interface Generator<T> { T next(); }
Так вот, мне не совсем понятно, как работает вот эта строчка:
return IterableFibonacci.this.next();
а именно ключевое слово this в ней. Я, конечно, понимаю, что она вызывает метод next() из Fibonacci, но почему и каким образом? Если поможете разобраться или посоветуете какой-нибудь ресурс, где можно почитать о подобном, буду вам сильно благодарен!
Спасибо!