Mientras revisa el código fuente de libgdx para un Stage, encontré este segmento:

public void draw () {
    Camera camera = viewport.getCamera();
    camera.update();

    if (!root.isVisible()) return;

    Batch batch = this.batch;
    if (batch != null) {
        batch.setProjectionMatrix(camera.combined);
        batch.begin();
        root.draw(batch, 1);
        batch.end();
    }

    if (debug) drawDebug();
}

( java libgdx

7
EntangledLoops 6 feb. 2015 a las 05:03

2 respuestas

La mejor respuesta

En los primeros días de Java, en mi humilde opinión, a veces se usaba como una optimización , para evitar acceder a una variable miembro. Sin embargo, creo que hoy en día, Hotspot puede optimizar mejor que nosotros los humanos.

Sin embargo, en este contexto, podría usarse para evitar problemas en caso de modificación simultánea de esa variable, ya que es probable que se requiera llamar a begin() y end() en la misma instancia.

3
Community 23 may. 2017 a las 11:49

Ese es un código interesante.

Una posibilidad sería asegurarse de que cada una de las llamadas a los métodos por lotes sean para el mismo objeto. Si algún otro código modifica this.batch en otro hilo, un resultado posible sería que algunas de las llamadas al método sean para una instancia de un objeto Batch mientras que el resto de las llamadas van a otra instancia de un objeto Batch.

Otra posibilidad es que algunos programadores transfieran ideas y estilos de otros lenguajes (en este caso, un lenguaje donde debe usar un identificador como "self" para acceder a la instancia actual) y en este caso pueden haber estado tratando de evitar escribir esto. .lote repetidamente.

Sin saber más sobre la muestra de código, solo puedo hacer conjeturas.

0
Simon G 6 feb. 2015 a las 02:22