Bloqueo en JAVA

darkblade60

Puedo hacer un objecto global en todas las clases sin pasarlo como parametro? Sigue alguien me entiende y encima me contesta se me caen los cojones al suelo.

C

Obviamente lo primero que se viene a la cabeza es un campo público de tipo static. Pero es uno por cada clase y quieres una especie de variable global común a todas las clases.

Veo dos posibles soluciones. Una fácil y otra que te va a llevar algo más de tiempo entender si no conoces el famoso patrón Singleton.

Solución 1 (si es una constante): JAVA implemente en la clase Match la constante PI (por ejemplo). Y es una constante que puedes usar en todas tus clases siempre y cuando importes la clase java.lang.Math.
Para una constante te bastaría con crear una en una clase que importes en todas tus otras clases. Para declararla ya sabes: public static final

Solución 2 (si es un objeto como comentas).
Eso que planteas es típico de, por ejemplo, un objeto que sea quien provea el acceso a la base de datos.
En estos casos lo suyo es hacer uso del patrón Singleton mediante el cual creas una clase de la que sólo puede existir una instancia. Esto es fácil. Sólo hay que proteger el constructor por defecto (haciéndolo privado). Por otro lado creas un campo en la clase que sea una instancia de la misma y provees de un método para que pueda ser instanciado desde fuera. Y este método si no existe una instancia la crea y la retorna y si existe la retorna simplemente.

Te paso un tutorial para la ocasión:

http://www.webtaller.com/construccion/lenguajes/java/lecciones/singletons-java-patron-instancia-unica.php

Yo en java no le he implementado nunca. Sí en PHP. Pero vamos, que la filosofía es la misma.

Si buscar por patrón Singleton en google encontrarás más ejemplos.

2 1 respuesta
tOWERR

Lo que creo que puedes hacer es crear la clase publica, y los metodos de esa clase estaticos y publicos y de esta manera lo que tienes que hacer para llamarlos en otras clases solamente es indicar el nombre de la clase y luego el metodo o objeto. Asi es como lo tengo yo en algunas clases para no tener que crearme objeto de ella para llamarla, por ejemplo a la hora de conectar con una base de datos. Dejo aqui un ejemplo simple que tengo:

CODIGO

Espero que te sirva esto.

BLZKZ

a mi lo de singleton como a #2 me parece una buena solución, de hecho es lo que uso para este tipo de cosas xD

darkblade60

gracias por la ayuda, me creia que este subforo estaba mas muerto... al final he conseguido solucionar el problema y era una gran tonteria... como bien he dicho estaba bloqueando y pegando mil veces con el mismo muro, cuanto tiempo perdido!!

1 respuesta
C

#5, en mi opinión no has perdido tiempo. Hay una frase de un famoso inventor (creo) que ahora no recuerdo en la que expresaba que los cientos de ensayos y prototipos hasta dar con el invento en cuestión no fueron errores, sino mejoras de lo que finalmente inventó.

Perder el tiempo hubiera sido ver Telecinco, jugar al COD, WOW, DODs, BF3. Pero darte una y otra vez hasta solucionar un problema no es perder el tiempo, es perfeccionar tus conocimientos.

Me vuelvo a mi cueva después de este discurso filosófico de pacotilla xD

1 respuesta
darkblade60

#6
He echado muchos lol's cada vez que estaba a punto de llorar xD

pd: no me joderia si no lo tubiera que entregar mañana ^^^^^^^^

Usuarios habituales

  • darkblade60
  • BLZKZ
  • tOWERR