Lai*_*jus 8 java android subclass anonymous-class
我想问一下使用匿名类和命名内部类的好习惯是什么?
我正在编写一个Android应用程序,其中包含许多UI元素(按钮,文本字段等).对于他们中的许多人我需要一些听众,所以在onCreate应用程序中我有一堆非常小的匿名类,如:
someButton.setOnClickListener(
new View.OnClickListener() {
public void onClick(View v) {
// do something...
}
}
);
Run Code Online (Sandbox Code Playgroud)
每个这样的匿名类都是5到20行大 - 足够小,非常适合来自Java™的Nutshell书中的推荐:
通常,在以下情况下,您应该考虑使用匿名类而不是本地类:
- 班级的身体很短.
- 只需要该类的一个实例.
- 该类在定义后立即使用.
- 该类的名称不会使您的代码更容易理解.
但问题是,IMO onCreate变得非常大,通过快速查看代码变得更加复杂.它仍然很容易理解,但太大了.
那么在这种情况下会有什么更好的练习 - 拥有一堆小的内部子类,其中每个子类都很好地分开,但只使用一次或更好使用匿名类代替?
我不认为这种或那种方式有明确的答案.两种风格都很好,它真的是你喜欢的.
另一种选择是拥有
通过单个函数调用每个onClick的内容,这将使匿名类非常短.即:
someButton.setOnClickListener(
new View.OnClickListener() {
public void onClick(View v) {
doSomeButtonClick();
}
}
);
private void doSomeButtonClick() {
// do something
}
Run Code Online (Sandbox Code Playgroud)
将其重构onCreate()为按通用功能分组的单独方法,以便您拥有逻辑单元.如果GUI很复杂,那么它将在以后帮助您.
编辑:
此外,由于默认情况下,在匿名类中,您需要使用代码格式化程序缩进更多行,因此需要缩短行以避免格式化程序将其划分为多行以使其更长.这通常是表明提取类并给它命名的好时机.
| 归档时间: |
|
| 查看次数: |
4369 次 |
| 最近记录: |