X
Du bekommst autmatisch einen Constructor erzeugt, nämlich den, den du mit "new foo_interface()" auch schon aufrufst. Wenn du irgendwelchen Code im Contructor haben wolltest, kannst du stattdessen zusätzlich Instance Initializers verwenden. Das sind einfach Blöcke ohne einen Methodenheader davor, so ähnlich wie die häufuger verwendeten Static Initializers "static { ... }", nur eben ohne static davor. Diese Blöcke werden nach dem Constructor ausgeführt. Außerdem kannst du alle lokalen final Variablen aus dem Scope, in dem das Object erzeugt wird, innerhalb der inneren Klasse verwenden.
final String arg = "test";
private foo_interface myFoo = new foo_interface ()
{
private int some_var;
{
some_var = arg.length();
System.out.println( "instance initializer " + this );
}
void bar()
{
System.out.println( "blubb " + arg + " .. " + some_var );
++some_var;
}
};
myFoo.bar();
myFoo.bar();