首页 > 编程 > Java > 正文

java局部内部类和匿名内部类的比较

2019-11-08 01:24:56
字体:
来源:转载
供稿:网友
局部内部类和匿名内部类,具有相同的能力和作用,但局部内部类的名字在方法外是不可见的。
那么为什么我们使用局部内部类而不是匿名内部类呢?* 唯一理由是:我们需要一个命名的构造器或者需要重载构造器,而匿名内部类只能用于实例初始化.* 另一个理由:需要不止一个该内部类的对象.
代码测试:
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 inner0Local inner1Local inner2Local inner3Local inner4Local inner5Local inner6annomous class7annomous class8annomous class9annomous class10annomous class11annomous class12annomous class13
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表