2010-10-25 31 views
9

Posso creare variabili public static final in un'interfaccia? Posso mantenere alcuni valori costanti comuni definiti in questi file?Java: le interfacce possono contenere variabili costanti definite in esse?

+0

Non è qualcosa di banale semplicemente * provare *? Hai un compilatore funzionante, giusto? –

+0

Mi dispiace, devo riformulare. Ho provato e funziona. Ma volevo piuttosto sapere se questa è una buona pratica. – kiki

+0

possibile duplicato di [Dovrebbe essere inserita una raccolta di costanti in una classe o interfaccia?] (Http://stackoverflow.com/questions/1372991/should-a-collection-of-constants-be-placed-in-a- class-or-interface) –

risposta

14

Sì, è possibile:

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

Tuttavia, è generalmente i conti di non essere una buona idea in questi giorni. Non è così male se l'interfaccia ha uno scopo reale e, e le costanti sono probabilmente utilizzate dalla maggior parte delle implementazioni ... ma l'introduzione di un'interfaccia solo per rendere più facile arrivare alle costanti è un abuso dello scopo delle interfacce, davvero. (Ed è quello che è successo molto spesso.)

+0

Quindi qual è la soluzione? Definisci un'altra classe semplicemente per definire queste costanti? – kiki

+0

@kiki: dipende dalla situazione. A volte le enumerazioni funzionano bene invece delle costanti. A volte averli in un'interfaccia naturale esistente è pulito come qualsiasi altra cosa. A volte basta tenerli con la classe che li riguarda più fortemente. A volte crea una nuova classe. –

+1

Se si sta implementando l'interfaccia solo per evitare il prefisso con il nome dell'interfaccia che è. –

1

Sì, è possibile mantenere le costanti nelle interfacce. A proposito, non è considerata una buona pratica.

1

Certamente, le costanti public possono essere dichiarate all'interno delle interfacce. Una cosa, tuttavia, se la tua interfaccia diventerà solo segnaposto per le costanti, usa enum invece

Problemi correlati