I have encountered the following Java syntax that I don\'t recognize.
This part is fine:
public abstract class Stream implements Iterator
ones = new Stream<Integer>() {
public Integer next() {
return 1; }
};
Assigns a new instance of an anonymous implementation of Stream<Integer>
(that contains a virtually unlimited number of 1
s. You may find more on anonymous classes in Java In A Nutshell
This is providing an inline (anonymous) subclass of the Stream
class.
Functionally, it is the same as:
public NewClass extends Stream {
public Integer next() {
return 1;
}
}
and
void someMethodInAnotherClass {
Stream stream = new NewClass();
}
but as this class definition isn't used outside the method body, you can define it as anonymous.
This is defining a Anonymous class which implements the Stream interface. To implement the interface we need to implement the method next.