创建了多少本地方法匿名类?

时间:2014-12-09 22:52:46

标签: java anonymous-inner-class

考虑这个课程:

public class Activity {

    public ArrayList<testInterface> containerListener = new ArrayList<testInterface>();

    public void metodoDiProva(int num) {
        final int finalNum = num;

        containerListener.add(new testInterface() {

            @Override
            public void metodoDiProva() {
                System.out.println(finalNum);
            }
        });
    }
}

现在看看这个方法:

public void metodoDiProva(int num) {
    final int finalNum = num;

    containerListener.add(new testInterface() {

        @Override
        public void metodoDiProva() {
            System.out.println(finalNum);
        }
    });
}

想象一下metodoDiProva(int num)被召唤2次,例如:

activityObj.metodoDiProva(10);
activityObj.metodoDiProva(20);

所以在侦听器的arrayList中有2个对象:

第一个侦听器对象可以使用 finalNum变量 的值
第二个侦听器对象可以使用 finalNum变量 的值

问题是:
在内存中有2个不同的InnerClas或只有1个?

1 个答案:

答案 0 :(得分:4)

不,只有一个内部阶级;它有两个例子。编译Activity时,您会看到两个.class文件:Activity.classActivity$1.class,其中Activity$1.class代表您的匿名内部类。