2010-10-25 16 views
9

¿Puedo crear variables public static final en una interfaz? ¿Puedo mantener algunos valores constantes comunes definidos en estos archivos?Java: ¿Pueden las interfaces contener variables constantes definidas en ellas?

+0

¿No es esto algo que es trivial simplemente * intentar *? Usted tiene un compilador que funciona, ¿verdad? –

+0

Lo siento, debo volver a expresarlo. Lo intenté y funciona. Pero prefiero saber si esta es una buena práctica. – kiki

+0

posible duplicado de [¿Debería colocarse una colección de constantes en una clase o interfaz?] (Http://stackoverflow.com/questions/1372991/should-a-collection-of-constants-be-placed-in-a- clase-o-interfaz) –

Respuesta

14

Sí, puede:

public interface Constants 
{ 
    public static final int ZERO = 0; 
} 

Sin embargo, es generalmente en cuenta de no ser una buena idea en estos días. No es tan malo si la interfaz tiene un propósito real y, y es probable que las constantes sean utilizadas por la mayoría de las implementaciones ... pero introducir una interfaz solo para facilitar el acceso a las constantes es un abuso del propósito de las interfaces, realmente. (Y eso es lo que solía suceder mucho).

+0

Entonces, ¿cuál es la solución? Definir otra clase simplemente para definir estas constantes? – kiki

+0

@kiki: Depende de la situación. A veces, las enumeraciones funcionan bien en lugar de las constantes. A veces tenerlos en una interfaz natural existente es tan limpio como cualquier otra cosa. A veces simplemente mantenlos con la clase que se relaciona con ellos más fuertemente. A veces crea una nueva clase. –

+1

Si está implementando la interfaz solo para evitar el prefijo con el nombre de interfaz que es. –

1

Sí, puede mantener las constantes en las interfaces. Por cierto, se considera que no es una buena práctica.

1

Ciertamente, las constantes public se pueden utilizar como interfaces declaradas dentro. Una cosa, sin embargo, si su interfaz va a ser marcadores de posición para constantes, use enum en su lugar

Cuestiones relacionadas