【发布时间】:2010-09-15 14:45:34
【问题描述】:
在我的 Android 项目中,我定义了一些回调来操作按钮点击、连接事件或 UI 事件,例如 Dilaog.onShow()。出于演示目的,我选择了一个必须从一些 Activity 代码启动的 Runnable 接口。使用 Java,我有不同的方式来表达自己。
一种模式是使用匿名类
runOnUiThread(new Runnable() {
public void run() {
doSomething();
}
});
private void doSomething() {
}
another - 定义一个内部私有类,即
private DoSomething implements Runnable {
public void run() {
// do something;
}
}
...
runOnUiThread(new DoSomething());
还有一个 - 使用私有成员,像这样:
private final Runnable doSomething = new Runnable() {
public void run() {
// do something;
}
}
...
runOnUiThread(doSomething);
这是我最喜欢的另一个,因为一方面它实际上不会构造对象,除非有人真正使用它,因为它避免了额外的类,因为它可以在需要时接受参数。
private Runnable doSomething() {
return new Runnable() {
public void run() {
// do something;
}
}
}
...
runOnUiThread(doSomething());
我不是在寻找品味或宗教信仰的论据,而是代码可维护性和性能的论据。我希望收到可以帮助我发展自己的偏好的提示和建议,可能 - 根据给定的情况提供不同的偏好。
剧透:
Java 的进步使这个问题已经过时,请参阅接受的答案。
【问题讨论】:
-
相关:Is this the end of [code quality]?。如果您可以编辑此问题以使其不是基于意见的措辞,并删除code-quality 标签,那么我将撤回我的关闭投票(或者如果再次关闭,则投票重新打开)。
-
抱歉,我不知道这个有问题的标签。
-
您的问题仍然有过于基于意见的措辞。我确信它可以被编辑为不是这样,但这取决于你。
-
让我想想
-
没问题,如果您认为不再如此,请联系我。
标签: java lambda coding-style anonymous-class private-class