Test Foro de elhacker.net SMF 2.1

Programación => Programación General => Java => Mensaje iniciado por: Brax en 5 Abril 2014, 16:33 PM

Título: [Duda] Como actualizar un objeto en Java
Publicado por: Brax en 5 Abril 2014, 16:33 PM
Lo que quiero decir es como actualizar el objeto de forma que este cargue de nuevo, pero sin tener que volverlo a declarar.
Aca en el método run, estoy declarando lo siguiente:

calen = new GregorianCalendar();

Pero si lo estoy declarando así, ¿Estoy haciendo que el programa tenga mas objetos y se haga mas pesado, o que?
¿Como seria la manera correcta de hacerlo?

import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

public class Reloj extends Thread{
Calendar calen;

Reloj(){
calen = new GregorianCalendar();
start();
}

public void run(){
while(true){
try{
System.out.println(calen.get(Calendar.HOUR)+":"+calen.get(Calendar.MINUTE)+":"+calen.get(Calendar.SECOND));
calen = new GregorianCalendar();
sleep(1000);
}catch(Exception e){System.out.println("Error");}
}
}

public static void main(String[] args){
Reloj reloj = new Reloj();
}
}

Espero haberme explicado.
Gracias y un saludo!
Título: Re: [Duda] Como actualizar un objeto en Java
Publicado por: Mitsu en 5 Abril 2014, 20:12 PM
Puedes declarar un objeto calendar de ésta manera:

Código (=java) [Seleccionar]

Calendar calendar; // objeto Calendar


Éste objeto es solamente un objeto Calendar pero no tiene una instancia de la clase Calendar. Una instancia es la 'escencia' de una clase que se le asigna a un objeto de dicha clase, y un objeto es solamente una variable que es de un 'tipo' de clase. Así que tu puedes instanciar mil y un veces el objeto Calendar y siempre será un solo objeto, ya que al instanciar nuevamente el objeto, la instancia anterior desaparece de memoria.

Código (=java) [Seleccionar]

int i=1;
while(i<1000) {
    calendar = Calendar.getInstance(); // un solo objeto con una sola instancia
}


Pero si haces ésto:

Código (=java) [Seleccionar]

int i=1;
while(i<1000) {
    Calendar calendar = Calendar.getInstance(); // mil objetos Calendar
}



Salu2.