¿Hay alguna diferencia en la eficiencia (por ejemplo, el tiempo de ejecución, el tamaño del código, etc.) entre estas dos formas de hacer las cosas?Implicaciones de la eficiencia de la clase anónima de Java
A continuación se encuentran ejemplos diseñados que crean objetos y no hacen nada, pero mis escenarios reales pueden estar creando nuevos hilos, oyentes, etc. Suponga que las siguientes piezas de código ocurren en un bucle para que pueda marcar la diferencia.
Uso de objetos anónimos:
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
}
};
}
}
Definición de una clase primera:
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() {}
};
Debe hacer lo que cree que es el más claro y fácil de entender, la diferencia de rendimiento debe ser mucho menor que el trabajo que realiza en doWork() por lo que no hará la diferencia. Si tuviera que estimar la diferencia, esperaría unos 10 nano segundos. –
A menos que estuviese haciendo un código de rendimiento crítico y su conferencia no sea – LegendLength