下面的代码是使用匿名类实现的对象的实例化。
我不太清楚的是匿名类创建的对象的确切寿命。
线
PictureCallback jpegCallback;
创建一个 PictureCallback 类型的变量并将名称 jpegCallback 分配给它。该变量是 MainClass 类的成员变量。
接下来,它实例化一个 PictureCallback 类型的新对象并将其存储到 jpegCallback 变量中。
我不明白这段代码到底是什么时候执行的。因为 PictureCallback jpegCallback 变量是 MainClass 的成员,所以它看起来必须在类加载器加载 MainClass 时创建,同时它是 MainClass 的其他成员变量和静态变量。
因此,如果这是真的,那么必须以与静态内部类或静态变量相同的方式创建 PictureCallback 匿名类。在运行时开始。
匿名对象必须像静态对象一样存在,因为如果它在运行时中间停止存在,那么如果调用回调方法,则覆盖方法中定义的操作将不会发生,因为该对象不再存在。
我最好的猜测是,当 MainClass 被加载时,这个对象就像一个静态对象一样被创建,它会一直持续到 MainClass 被销毁。
有人可以解释这个匿名类对象何时存在,何时被垃圾收集器清除或不再可访问?
public class MainClass extends Activity {
PictureCallback jpegCallback = new PictureCallback() {
@Override void onPictureTaken(byte[], data, Camera camera){
// some action performed
}
}
} // end of MainClass