interface Counter{
int next();
}
public class LocalInnerClass {
private int count=0;
Counter getCounter(final String name){
//局部内部类
class LocalCounter implements Counter{
public LocalCounter(){
System.out.println("LocalCounter()");
}
public int next(){
System.out.println(name);
return count++;
}
}
return new LocalCounter();
}
Counter getCounter2(final String name){
return new Counter() {
@Override
public int next() {
System.out.println(name);
return count++;
}
//匿名内部类不能有带名字的构造器,只能有内容初始化;
{
System.out.println("Counter()");
}
};
}
public static void main(String[] args) {
LocalInnerClass localInnerClass=new LocalInnerClass();
Counter
c1=localInnerClass.getCounter("Local inner"),
c2=localInnerClass.getCounter2("annomous class");
for(int i=0;i<7;i++){
System.out.println(c1.next());
}
for(int i=0;i<7;i++){
System.out.println(c2.next());
}
}
}
测试结果
LocalCounter()
Counter()
Local inner
0
Local inner
1
Local inner
2
Local inner
3
Local inner
4
Local inner
5
Local inner
6
annomous class
7
annomous class
8
annomous class
9
annomous class
10
annomous class
11
annomous class
12
annomous class
13