public class AnonymousConstructor {
public static base getbase(int i){
return new base(i) {
//创建匿名类的构造方法的办法
{
System.out.println("Inside instance initializer");
}
@Override
public void f() {
System.out.println("In anonymous f()");
}
};
}
public static base1 getbase1(){
return new base1() {
{
System.out.println("base1 Inside instance initializer");
}
@Override
public void f() {
System.out.println("base1 In anonymous f()");
}
};
}
public static base2 getbase2(final int i){
return new base2(i){
{
System.out.println("anonymous constructer,i = " + i);
System.out.println("base2 Inside instance initializer");
}
@Override
void f() {
super.f();
System.out.println("base2 In anonymous f()");
}
};
}
public static void main(String[] args) {
base base = getbase(47);
base.f();
base1 base1 = getbase1();
base1.f();
base2 base2 = getbase2(1);
base2.f();
}
}
abstract class base {
base(int i) {
System.out.println("base constructor, i = " + i);
}
public abstract void f();
}
interface base1{
void f();
}
class base2{
base2(int i){
System.out.println("base2 constructor, i = " + i);
}
void f(){
System.out.println("base2 f()");
}
}
这段代码输出:
base constructor, i = 47 Inside instance initializer In anonymous f() base1 Inside instance initializer base1 In anonymous f() base2 constructor, i = 1 anonymous constructer,i + 1 base2 Inside instance initializer base2 f() base2 In anonymous f()



