これら 2 つの方法で効率 (実行時間、コード サイズなど) に違いはありますか?
以下は、オブジェクトを作成して何もしない不自然な例ですが、私の実際のシナリオでは、新しいスレッド、リスナーなどを作成している可能性があります。違いが生じる可能性があるように、次のコードがループで発生すると仮定します。
匿名オブジェクトの使用:
void doSomething() {
for (/* Assume some loop */) {
final Object obj1, obj2; // some free variables
IWorker anonymousWorker = new IWorker() {
doWork() {
// do things that refer to obj1 and obj2
}
};
}
}
最初にクラスを定義する:
void doSomething() {
for (/* Assume some loop */) {
Object obj1, obj2;
IWorker worker = new Worker(obj1, obj2);
}
}
static class Worker implements IWorker {
private Object obj1, obj2;
public CustomObject(Object obj1, Object obj2) {/* blah blah */}
@Override
public void doWork() {}
};