考虑这个类:
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变量,该变量的值为10。
第二个监听对象可以使用finalNum变量,该变量的值为20。
问题是:
内存中有 2 个不同的 InnerClas 还是只有 1 个?
最佳答案
不,只有一个内部类;有两个例子。编译Activity
时,您将看到两个.class文件:Activity.class
和Activity$1.class
,其中Activity$1.class。 class
代表您的匿名内部类。
关于java - 创建了多少个本地方法匿名类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27390401/