Foro sobre Java SE > Variable class
Esta línea: public static class Object objeto=new Object();
no compila siquiera, porque class es una palabra reservada para declarar una clase.
La declaración correcta sería: public static Object objeto = new Object();
Y la manera de usarlo sería: Object nuevo = MiClase.objeto;
Las declaraciones static dentro de una clase definen propiedades o métodos que pertenecen a la clase, no a instancias de la misma; por ese motivo se antepone el nombre de la clase cuando se usan.
Aquí tienes una explicación bastante completa sobre el tema:
http://docs.oracle.com/javase/tutorial/java/javaOO/classes.html
Con respecto a tus comentarios, nadie pone en duda las dificultades de un novato, ni nadie exige que se comporte como un experto.
Sin embargo, tampoco nadie es adivino, y no se pueden contestar dudas que no se exponen con claridad.
En multitud de ocasiones, ni se acompaña algo de código a las cuestiones, ni se expone lo que se pretende conseguir, ni se documentan las excepciones.
Con solo "un poco de literatura genérica" se quieren respuestas concretas, lo que no es sencillamente posible.
En primer lugar no me gusta el extracto de Raymond que tenéis como entrada al foro y que dice:
"En el mundo de los hackers, el tipo de respuestas que obtengas a tus preguntas técnicas depende tanto de la manera en que formules tus preguntas como de la dificultad de desarrollar la respuesta. En esta guía se enseñará cómo preguntar de manera que puedas obtener una respuesta satisfactoria.
Lo primero que tienes que entender es que a los hackers les gustan los problemas realmente complejos y las buenas preguntas que les hagan pensar en ellos. De no ser así no estaríamos aquí. Si nos proporcionas una cuestión interesante te estaremos agradecidos; las buenas preguntas suponen un estímulo y un regalo. Las buenas preguntas nos ayudan a desarrollar nuestra comprensión, y a menudo revelan problemas que podíamos no haber percibido o en los que de otra manera no habríamos reparado. Entre los hackers, "¡Buena pregunta!" debe entenderse como un sincero cumplido.
A pesar de esto, los hackers tienen la reputación de enfrentarse a las preguntas sencillas con hostilidad o arrogancia. A veces parece como si resultásemos hostiles a los principiantes o a los ignorantes. Pero eso realmente no es cierto.
Lo que somos, de una manera no apologética, es hostiles con la gente que parece no querer pensar o hacer sus deberes antes de plantear las preguntas. La gente de ese tipo son sumideros de tiempo -- toman sin dar a cambio, desperdician el tiempo que podríamos haber dedicado a otra cuestión más interesante y con otra persona más merecedora de una respuesta. A las personas de este tipo las llamamos "perdedores" (y por razones históricas a veces escribimos "lusers".
Somos, de largo, voluntarios. Robamos el tiempo de vidas ocupadas para responder preguntas, y a veces nos sobrecargan. Así que filtramos sin tregua. En particular, desechamos las preguntas de quienes parecen ser perdedores para ocupar el tiempo que dedicamos a responder preguntas de una manera más eficiente, con los ganadores.
Tú no quieres ser uno de los perdedores. Tampoco quieres parecerte a ninguno de ellos. La mejor manera de obtener una respuestas rápida y eficiente es preguntando como un ganador — como una persona con inteligencia, confianza en sí mismo e indicios de que necesita ayuda con un problema en particular."
Más que nada porque nadie nace sabiendo y si la pregunta formulada por el chico/a es autoexplicativa, por muy absurda que sea si no sabe casi nada de programación es normal que cometa errores absurdos; todos hemos empezado así.¿Que pasa si en vuestra casa tenéis una avería con las tuberías?, o bien sois tan listos de arreglarla vosotros o más bien llamaríais al fontanero que podría tomaros por imbéciles por ser algo evidente.Así que chicos, más compasión con los novatos.El saber está para divulgarlo, ¿que ganamos haciendo lo contrario?.
Por otro lado, quería preguntaros algo quizás absurdo(para mí no que no lo sé aún) y es porque la variable estática class no funciona como el resto de variables estáticas de tal modo que si hago lo siguiente:
package paquete;
public class MiClase{
public static class Object objeto=new Object();
public void onCreate(Bundle savedInstanceState){
MiClase.static.getSimpleName(); //accedo mediante variable de clase al método correspondiente de Class<paquete.MiClase>, en este caso a getSimpleName().
static.getSimpleName(); //ERROR.debería hacer lo mismo que antes, es la misma variable y está definida dentro de la clase MiClase, por lo tanto no sería necesario anteponer el nombre de la clase.
objeto.equals(objeto); ///Con la siguiente variable si es posible, entonces el problema precisamente lo encontramos con la variable static.
}
}
Vamos, que con cualquier variable definida dentro de la clase no sería necesario anteponer el nombre de la clase(y así sucede siempre) pero con la variable class no sucede así.
Saludos.