Java - Main-Clases_Static

 
Vista:

Main-Clases_Static

Publicado por Luis (14 intervenciones) el 25/02/2007 13:18:08
Tengo el siguiente codigo:

class Raton_Mesa extends Thread{
public void run(){
Eti1.setText("X:"+Hoja.GetX_Raton()+" Y:"+Hoja.GetY_Raton());
}


}

public static void main(String args[]) throws IOException{

Apli MiApli=new Apli();
MiApli.setVisible(true);

new Raton_Mesa("HiloRaton").start();
}

Al compilar salta el error de variable no estatica no se puede referenciar desde contexto estatico. Alguien sabe la solución. Si quito la linea de la etiqueta sale también. Se refiere a que Raton_Mesa es no estatico y main es estatico
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Main-Clases_Static

Publicado por Angel (537 intervenciones) el 25/02/2007 14:19:02
Es porque la clase a la que hace referencia, Raton_Mesa no esta declara como estatica, eso significa que es una clase de instancia, es decir que necesita una instancia de la clase que la contiene para poder existir.
Para arreglar el fallo o bien hacer la clase static o bien la invocas traves de una instancia de la clase que la contiene.

si estubiese dentro de la clase Exterior, por seria algo asi:

Exterior ext = new Exterior();
ext.new Raton_Mesa("HiloRaton").start();

Saludos,,,,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Main-Clases_Static

Publicado por Gonzalo (180 intervenciones) el 25/02/2007 19:56:32
1. Una clase no puede ser estática, y un constructor tampoco. Así que es normal que Raton_Mesa no sea estático.

2. ¿Podrías poner el código entero de la clase Raton_Mesa? Y también de la clase que contiene el método main, que digo yo que no lo habrás puesto así suelto, ¿no?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

A Gonzalo

Publicado por Luis (14 intervenciones) el 26/02/2007 11:31:34
Una clase si puede ser estática. Al hacerla estática sólo se puede poner una en memoria. Es tan cierto como que la solución ha venido poniendo estática y empieza de esta manera:

static class Raton_Mesa extends Thread{
public void run(){
//Código que gestiona las coordenadas del ratón.
}
}

De todas formas muchas gracias a los dos...Luis
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:A Gonzalo

Publicado por Tom (1831 intervenciones) el 26/02/2007 12:32:14
Una clase sólo puede ser declarada 'static' si es una "member class". O sea si es una clase declarada en el cuerpo de otra.

Esta clase, así declarada pasa a ser considerada una "nested top-level class".
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:A Gonzalo

Publicado por Gonzalo (180 intervenciones) el 26/02/2007 19:24:25
Como dice Tom, una clase puede ser estática si es interna.

Pero, por tu código, no se podía saber que Raton_Mesa lo fuera. Por eso te pedía que pusieras todo el código. Además, eso de utilizar clases internas en tu clase de inicio... no es buena idea, no.

Aún así, lo que no es necesario en absoluto es que una clase tenga que ser estática para poder utilizarla en el main.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Main-Clases_Static

Publicado por Tom (1831 intervenciones) el 26/02/2007 12:38:12
(new Raton_Mesa()).start(); // Un poco pillado por los pelos.
o, mejor:
Raton_Mesa rm = new Raton_Mesa();
rm.start();
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar