Desidero che una variabile costante sia comune a tutte le classi in un pacchetto. C'è un modo per farlo senza creare un'interfaccia solo con una definizione e farla implementare da ogni classe?Come posso avere una variabile costante comune a tutte le classi in un pacchetto?
risposta
In Java, tutte le costanti devono risiedere in un tipo (classe o interfaccia). Ma non è necessario implementare un'interfaccia per utilizzare una costante dichiarata all'interno.
Si può provare mettendo qualcosa di simile nel pacchetto:
interface Constants {
static final String CONSTANT = "CONTANT";
}
e poi, utilizzando in questo modo:
String myVar = Constants.CONSTANT;
In questo modo, avete ancora la vostra interfaccia, ma nessuna classe implementalo.
Sembra essere un buon candidato per una voce in un file di proprietà per me.
È possibile utilizzare una classe astratta per fungere da classe base per ogni impls in quel pacchetto.
È possibile creare una classe speciale (statica) con solo questa variabile. Successivamente puoi aggiungere altre costanti o qualsiasi altra cosa tu abbia bisogno per quella classe.
In genere le applicazioni hanno una classe o un'interfaccia "Costanti" che contiene tutte le costanti.
Generalmente per raggruppare le costanti in classi logiche. Per esempio se ci possono essere due tipi di dipendenti, regolare e contratto:
class EmployeeType
{
public static final String REGULAR = "regular";
public static final String CONTRACT = "contract";
}
e usarlo come EmployeeType.REGULAR
Se le costanti non possono essere raggruppati in questo modo, avere una classe/un'interfaccia separata per contenere questi.
class Constants
{
public static final String APPLICATION_DOMAIN = 'domain';
}
Non è necessario estendere/implementare questa interfaccia di classe per utilizzare i valori. Le costanti saranno generalmente dichiarati public static final
, è possibile accedervi direttamente: Constants.APPLICATION_DOMAIN
Usa un pacchetto di classe privata:
class Constants{
public static final int MY_VALUE = 1234;
}
Questo è accessibile solo dalle classi dello stesso package:
int val = Constants.MY_VALUE;
È possibile eseguire questa operazione in vari modi:
- Un modo (come indicato qui) è creare un'interfaccia costante globale e disporre di attributi
public static final
di ciascuna costante. - Creare il file delle proprietà. Avendo un file di proprietà, avrai una coppia di valori chiave (separati da un operatore
=
) ciascuno dichiarato su una nuova riga. Ecco un tutorial su come creare e utilizzare il file delle proprietà.
- 1. Trova tutte le classi in un pacchetto in Android
- 2. Come posso estrarre tutte le classi in un file separato?
- 3. Posso avere un valore negativo come espressione costante in Scala?
- 4. È una variabile membro statica comune a tutte le istanze generiche C#?
- 5. Come posso assegnare una funzione o una proprietà a tutte le altre classi come ToolTip
- 6. Come trovare tutte le occorrenze di una variabile in Vim?
- 7. Modifica del parametro predefinito comune in tutte le funzioni in un pacchetto
- 8. Come posso avere una variabile temporanea in una funzione constexpr?
- 9. Come posso avere una suite di test comune per più pacchetti in go?
- 10. Imposta findbug NotNull come predefinito per tutte le classi in un pacchetto
- 11. Come posso elencare tutte le classi caricate in un caricatore di classi specifico
- 12. Come posso avere riferimenti tra due classi in Objective-C?
- 13. Posso accedere a una costante di classe PHP utilizzando una variabile per il nome costante?
- 14. Vedere tutte le classi super-in Java
- 15. Android come posizionare tutte le mie classi in un pacchetto usando Proguard
- 16. rendere variabile disponibile a tutte le classi, metodi, funzioni e include, proprio come $ _POST
- 17. Come trovo tutte le classi usate in un file PHP?
- 18. È possibile registrare tutte le classi all'interno di un pacchetto come bean Spring
- 19. Come controllare tutte le classi sotto o usando una classe?
- 20. Come posso forzare tutte le classi derivate ad implementare un metodo o una proprietà astratta?
- 21. Scarica un pacchetto e tutte le dipendenze
- 22. come rendere una variabile vista in tutte le viste - rotaie
- 23. Le mie classi API interne dovrebbero essere tutte in un unico pacchetto?
- 24. Ottenere i nomi di tutte le classi Java dichiarate in un pacchetto
- 25. Come posso ottenere l'elenco di tutte le classi conformi a determinati protocolli in XCode 4?
- 26. Come posso scoprire le classi in un pacchetto specifico in python?
- 27. Ottenere tutte le Classi estesi in PHP
- 28. Come posso aggiungere una variabile a console.log?
- 29. Come posso concatenare una costante e una variabile e memorizzarla in una costante di classe con PHP?
- 30. Diversi moduli in un pacchetto che importa un modulo comune
Ogni dichiarazione di campo nel corpo di un'interfaccia è implicitamente pubblica, statica e finale. –
Java efficace, l'articolo 19 "Usa interfacce solo per definire i tipi" consiglia esplicitamente contro questo utilizzo di interfacce. Utilizza le classi per le costanti o le enumerazioni, se possibile –
@seanizer, puoi inviarmi quel pdf il mio ID di posta elettronica è lì con il mio profilo. –