Foro de elhacker.net

Programación => 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:

Código:
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?

Código:
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
  1. 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
  1. int i=1;
  2. while(i<1000) {
  3.    calendar = Calendar.getInstance(); // un solo objeto con una sola instancia
  4. }

Pero si haces ésto:

Código
  1. int i=1;
  2. while(i<1000) {
  3.    Calendar calendar = Calendar.getInstance(); // mil objetos Calendar
  4. }


Salu2.