Mike Schilling <mscottschilling@hotmail.com> wrote:
Lew wrote:
Andreas Leitgeb wrote:
In Java, the solution to this usually boils down to anonymous
classes: Iterable<Node> getChildrenIterable() {
final Iterator<Node> it= getChildrenIterator();
return new Iterable<Node>() {
public Iterator<Node> iterator() { return it; }
}
}
(untested!)
Naturally the anonymity is a tangential detail. It's trivial to
give such a class a name, just not usually necessary.
Exactly.
Speaking of which, a semi-tangential question: has anyone ever
found a use for a local class (i.e, a class defined inside a
method, just like an anonymous class, but given a name)? I never
have.
I haven't yet had a use for it myself, but I could think of a few:
1) An aesthetic tradeoff: you give that class a name, and in
return
you avoid having a line without the "class" keyword but followed
by
a class-body.
2) with a named class you can also have your own constructor with
parameters, while still sugar'ing away the need to pass finals
explicitly. 3) One may instantiate the same class at multiple
places
within the same method. (e.g. for a couple of switch-cases.)
All good points. Of course, when any of them apply, you've also