es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Instancias en Java y su uso posterior (variables, …)

Me gustaría preguntar sobre las instancias de Java usando o no la palabra clave “this” en el siguiente ejemplo:

Tengo la clase principal de mi proyecto y luego la paso a otra clase como esta:

private final MainClass mainClass;

public AnotherClass(MainClass mainClass, itemFromMainClass) 
{
 this.mainClass = mainClass;
 //estoy trabajando con ella de nuevo aquí
 mainClass.ask(itemFromMainClass);
 //¿cuál es la diferencia entre acceder a ella con this o sin this?
 this.mainClass.ask(itemFromMainClass);
}

VS

public AnotherClass(MainClass mainClass, itemFromMainClass) 
{
 mainClass.ask(itemFromMainClass);
}

¿Debería el “itemFromMainClass” también tener una variable definida y establecida al pasarla?

¿Cuál es la diferencia exacta al acceder a ella con “this” (agregando una variable global privada a la clase) o sin “this” (sin agregar una variable global privada a la clase)?

¿Qué impacto puede tener mientras programo cosas para que se repitan cada 10 segundos con “this” o sin “this”?

public class AnotherClass {

    private final MainClass mainClass;
    private final BukkitScheduler bukkitScheduler;

    public AnotherClass(MainClass mainClass, BukkitScheduler bukkitScheduler) {
        this.mainClass = mainClass;
        this.bukkitScheduler = bukkitScheduler;

        this.bukkitScheduler.scheduleSyncRepeatingTask(this.mainClass, () -> {
         doSomething(this.mainClass.getSomething());
        }, 20L, 20L);
    }
}

vs

public class AnotherClass {
    public AnotherClass(MainClass mainClass, BukkitScheduler bukkitScheduler) {
        bukkitScheduler.scheduleSyncRepeatingTask(mainClass, () -> {
         doSomething(mainClass.getSomething());
        }, 20L, 20L);
    }
}
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    P: ¿Debería el itemFromMainClass también tener una variable definida y establecida en pass?

    Sí, si necesita usar la variable itemFromMainClass en AnotherClass, debe ser definida y pasada como parámetro como se muestra en ambos ejemplos.

    P: ¿Cuál es la diferencia exacta al acceder a ella con this (agregando una variable global privada a la clase) o sin this (sin agregar una variable global privada a la clase)?

    Cuando se accede a una variable de clase dentro del método de clase, el uso de la palabra clave this es opcional. Sin embargo, es útil cuando hay un conflicto de nombres entre el parámetro del método y la variable de clase. En el ejemplo dado, la palabra clave this no es necesaria, ya que no hay conflicto de nombres. Ambos enfoques funcionarán de la misma manera.

    P: ¿Qué impacto podría tener al programar repeticiones cada 10 segundos con this o sin this?

    El uso de la palabra clave this al programar puede ser necesario si desea especificar la variable de instancia que se utilizará en la tarea programada. En el ejemplo dado, asegura que el método doSomething se llame con la variable something de la variable de instancia mainClass de la instancia actual de AnotherClass. Sin usar this, no sería posible especificar la variable de instancia correcta para que se utilice en la tarea programada.

Comments are closed.