【发布时间】:2013-03-21 20:10:43
【问题描述】:
我正在重构一个具有面向公众的接口的类,考虑到它的用法让我问:
在一些较大的类(作为实例变量)中声明以下内容有什么区别:
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
}
});
}
更具体地说,前者是否仍被视为匿名内部类?我在this answer 中读到一个匿名内部类
是在另一个类的方法体中创建和定义的方法
我给出的第一个示例是在另一个类的主体中创建和定义的,但不像第二个示例那样在另一个类的方法中创建和定义。它仍然是一个匿名内部类吗?此外,一个人与另一个人的公认做法是什么?将匿名内部类声明为实例变量(我认为仍然如此)是否更有效,因为不需要重新创建新对象?
【问题讨论】:
-
匿名类就是匿名类。在这两种情况下仍然只创建了 一个 [匿名] 类型 - 结果实例的使用与类型本身无关。
标签: java anonymous-class anonymous-inner-class