L
Lew
Chris said:Yes, I realise that.
Then why did you highlight the closing paren?
What I find odd, is that there is a new scope
{ /* more stuff */ }, prior to the closing parenthesis.
It's a class definition.
IOW, is something like:
void Foo( new Bar() { System.out.println( "In the body of new
Bar" ); } );
....legal in Java?
No, because you are not defining a class inside the braces. IOW, the
System.out.println() has to happen inside a method. Also, you don't declare
the anonymous class in the declaration of the calling method (Foo, here, which
should have used a lower-case first letter in its name), but in its invocation.
<untested>
public interface Bar
{
public void do();
}
public class Foo
{
public void foo( Bar bar )
{
bar.do();
}
public static void main( String [] args )
{
Foo foo = new Foo();
foo.foo( new Bar()
{
public void do()
{
System.out.println( "In the body of new Bar" );
}
}
);
}
}
</untested>
Research anonymous classes.
<http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.9.5>
<http://java.sun.com/docs/books/tutorial/java/javaOO/innerclasses.html>
gives this a brief mention.
One of the best sites around for learning about Java features is mindprod.com.
<http://mindprod.com/jgloss/anonymousclasses.html>