Foros del Web » Programación para mayores de 30 ;) » Java »

Declaración de constantes en interfaces

Estas en el tema de Declaración de constantes en interfaces en el foro de Java en Foros del Web. Hola tengo una duda sobre la declaracion de constantes en interfaces. Como las interfaces son abstractas las constantes no pueden ser modificadas. entonces: la correcta ...
  #1 (permalink)  
Antiguo 19/08/2008, 08:15
Avatar de magam  
Fecha de Ingreso: julio-2006
Ubicación: Florencio Varela, Buenos Aires, Argentina
Mensajes: 97
Antigüedad: 17 años, 9 meses
Puntos: 1
De acuerdo Declaración de constantes en interfaces

Hola tengo una duda sobre la declaracion de constantes en interfaces.
Como las interfaces son abstractas las constantes no pueden ser modificadas.
entonces:
la correcta declaración de una constante como seria??

public interface bounceable{

public static final string slaudo= 'Hola';

}


or


public interface bounceable{

string slaudo= 'Hola';

}

Si la primera forma es correcta no es redundante??
por ejemplo una interface de por si es publica no se si me explico.

Muchas gracias.
  #2 (permalink)  
Antiguo 19/08/2008, 14:23
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Información Respuesta: Declaración de constantes en interfaces

Hola,

Según la especificación, sí es redundante.
Aunque se permite.

"Every field declaration in the body of an interface is implicitly public, static, and final. It is permitted to redundantly specify any or all of these modifiers for such fields."

http://java.sun.com/docs/books/jls/t...faces.html#9.3

Saludos.
  #3 (permalink)  
Antiguo 19/08/2008, 15:02
Avatar de diegoy2k  
Fecha de Ingreso: julio-2006
Ubicación: Algun Lugar
Mensajes: 68
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: Declaración de constantes en interfaces

Hola Magam!

No creo que sea bueno crear variables en una interfaz, ya que estas son para unificar mas las comunicaciones entre diferentes objetos, objetos que no tienen nada en comun les hago implementar "X" interfaz, y los puedo comunicar [interactuar].
Por otro lado el hecho de que una varible sea static, indica que es una varible de clase, esto es, no necesito tener una instancia de una clase para poder hacer referencia a esta, en el caso de jerarquias de clases donde el padre siampre es abstracto las puedo usar para contar la cantidad de instancias que tiene una clase, existe un patron de diseño que usa una variable de clase para permitir crear solo una instancia de esta [Singleton]

Saludos!!, espero aclararte algo!.
  #4 (permalink)  
Antiguo 20/08/2008, 11:49
Avatar de magam  
Fecha de Ingreso: julio-2006
Ubicación: Florencio Varela, Buenos Aires, Argentina
Mensajes: 97
Antigüedad: 17 años, 9 meses
Puntos: 1
Respuesta: Declaración de constantes en interfaces

Cita:
Iniciado por diegoy2k Ver Mensaje
Hola Magam!

No creo que sea bueno crear variables en una interfaz, ya que estas son para unificar mas las comunicaciones entre diferentes objetos, objetos que no tienen nada en comun les hago implementar "X" interfaz, y los puedo comunicar [interactuar].
Por otro lado el hecho de que una varible sea static, indica que es una varible de clase, esto es, no necesito tener una instancia de una clase para poder hacer referencia a esta, en el caso de jerarquias de clases donde el padre siampre es abstracto las puedo usar para contar la cantidad de instancias que tiene una clase, existe un patron de diseño que usa una variable de clase para permitir crear solo una instancia de esta [Singleton]

Saludos!!, espero aclararte algo!.
Creo que declarar una variable en una interface no esta permitido yo hablaba de constantes.
y al declarar una variable como abstract no se cual es la forma correcta de la declaración de la misma.
Muchas gracias igual por la ayuda.
  #5 (permalink)  
Antiguo 20/08/2008, 14:44
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: Declaración de constantes en interfaces

Para mí es indispensable declarar las constantes en las interfaces.
Por ejemplo:

public interface Animal {
// public static final int DORMIDO = 1;
// public static final int CANSADO = 2;
// public static final int CORRIENDO = 2;
enum Estado { DORMIDO, CANSADO, CORRIENDO }

public Estado getEstado();
}

De allí en adelante todos los objetos que implementen Animal pueden estar DORMIDO, CANSADO o CORRIENDO. (Ese es el objetivo de las interfaces). Eso le da consistencia a las aplicaciones. Como por ejemplo java.awt.Color.BLACK

Talves podrías ahondar en el tema de "interactuar", por que no lo entendí. Si Perro implementa Animal y Gato implementa Animal, como los hago interactuar por el hecho de tener la misma interface? No lo tomes a mal, pero si hay una forma de que se comuniquen por el hecho de compartir la misma interface ... me serviría mucho saberla.

Saludos,
  #6 (permalink)  
Antiguo 20/08/2008, 15:30
Avatar de diegoy2k  
Fecha de Ingreso: julio-2006
Ubicación: Algun Lugar
Mensajes: 68
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: Declaración de constantes en interfaces

Cita:
Iniciado por HackmanC Ver Mensaje
Talves podrías ahondar en el tema de "interactuar", por que no lo entendí. Si Perro implementa Animal y Gato implementa Animal, como los hago interactuar por el hecho de tener la misma interface? No lo tomes a mal, pero si hay una forma de que se comuniquen por el hecho de compartir la misma interface ... me serviría mucho saberla.
Saludos,
No hay drama todo bien!!!, es mas esta bueno que, si entiendo algo mal!, me lo corrijan.
Por ahi me exprese mal, con lo de interactuar, lo que quise decir es que si Perro implementa Animal y Gato implementa Animal, entonces un tercero puede hacer referencia a ellos, gracias a que de algun modo la interface lo permite!.
Saludos..
  #7 (permalink)  
Antiguo 20/08/2008, 16:55
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: Declaración de constantes en interfaces

Hola,

Ohhh, ya comprendo, bueno, ok.

Saludos.
  #8 (permalink)  
Antiguo 21/08/2008, 00:53
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Declaración de constantes en interfaces

Todo hay que decirlo, poner las constantes en interfaces era considerando una técnica muy apropiada al principio, aunque ahora no se suele recomendar. Las razones son más bien "filosóficas" (las interfaces se consideran un "contrato" y las constantes son un detalle de implementación) así que no hay nada malo en hacerlo desde un punto de vista práctico.

A mi no me importa escribir el nombre completo de las constantes, así que las declaro en clases o interfaces según quien las defina realmente.

PD: En cuanto a las variables(miembros) abstractos: no existe tal cosa, así que es normal que no encuentres la forma de declararlos .
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #9 (permalink)  
Antiguo 21/08/2008, 04:49
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: Declaración de constantes en interfaces

Hola,

Se me olvido aclarar .. que comenté las constantes int ...
y las reemplace por constantes tipo enum, si esto no es recomendable,
bueno, entonces cada quien forme su propio concepto.

Código:
public interface intrSocket {
  enum Estado { CONECTADO, DESCONECTADO }
  public Estado getEstado() { ... }
  public boolean connectar() { ... }
  public boolean desconectar() { ... }
}
public class iSuperSocket implements intrSocket {
}
public class iServerSocket implements intrSocket {
}
Si iSuperSocket u otros tuvieran menos o más Estados entonces no son un intrSocket. Y debe ser implementado separado de los demás intrSocket, pero no es un intrSocket por que no cumple con el "contrato" de estar conectado o desconectado.

Saludos,

ps:

Esta es mi opinión personal, nada más.

Última edición por HackmanC; 21/08/2008 a las 04:56 Razón: agregar "menos"
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:33.