package com.lwf.thinking.eight;
interface Constants{
void getName();
}
public class AnonymousInner {
public Constants cont(final String label){
return new Constants(){
private String name = label;
public void getName(){
System.out.println(name);
System.out.println("cont");
}
};
}
private class Inner implements Constants{
public void getName(){
System.out.println("Inner");
}
}
public Constants getConstans(){
Inner inner = new Inner();
return inner;
}
public static void main(String[] args) {
AnonymousInner out = new AnonymousInner();
//匿名内部类实现
Constants c = out.cont("good");
c.getName();
//内部类显式实现
Constants c2 = out.getConstans();
c2.getName();
}
}
上例中因为private String name = label;方法参数类型必须为final类型。
注意:如果匿名内部类中没有使用到这个参数,那么参数类型可以不为final型