我正在重构一个具有面向公众的接口的类,并且考虑到用法让我问:
在一些较大的类(作为实例变量)中声明以下内容有什么区别:
private final OnClickListener mButtonOnClickListener = new OnClickListener() {
@Override
public void onClick(View view) {
//some codes
}
};
vs 声明为匿名内部类如下(即时):
private void someFunctionInClass() {
someOtherFunctionThatTakesAnOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
//some codes
}
});
}
更具体地说,前者是否仍被视为匿名内部类?我在这个答案中读到一个匿名内部类
是在另一个类的方法体内创建和定义的
我给出的第一个示例是在另一个类的主体中创建和定义的,但不像第二个那样在另一个类的方法中创建和定义。它仍然是一个匿名内部类吗?此外,一个人与另一个人的公认做法是什么?将匿名内部类声明为实例变量(我认为仍然如此)是否更有效,因为不需要重新创建新对象?