public class Enumvalues{
enum courseList {
JAVA,
C,
PYTHON,
PERL
}
enum generalInformation {
NAME,
AGE,
PHONE
}
enum sex {
MALE,
FEMALE
}
}
public static void main(String args[]) {
printEnumValue(generalInformation); // how to pass enum in this block
}
static void printEnumValue(enum generalInformation) { // how to receive enum in this block
System.out.println(java.util.Arrays.asList(generalInformation.values()));
}
risposta
Se si desidera passare un unico valore da enum
public class Test {
enum GeneralInformation{
NAME;
}
private static void print(GeneralInformation val){
System.out.println(val);
}
public static void main(String[] args) {
print(GeneralInformation.NAME);
}
}
altrimenti se si vuole tutta la classe da passare poi, in quanto non era chiaro dalla questione
private static void print(Class<?> generalInfo){
}
public static void main(String[] args) {
print(GeneralInformation.class);
}
An enum viene utilizzato come un tipo:
static void printEnumValue(courseList generalInformation) { // how to receive enum in this block
utilizzato come:
printEnumValue(courseList.JAVA);
printEnumValue(EnumValues.generalInformation.NAME,EnumValues.generalInformation.AGE,EnumValues.generalInformation.PHONE);
Ricezione:
public static void printEnumValue(EnumValues.generalInformation en){
System.out.println(en.toString());
}
un enum è una classe. Quindi è possibile passare un'istanza della classe (ad esempio EnumValues.generalInformation.PHONE
) oppure è possibile passare la classe stessa (ad esempio, EnumValues.generalInformation.class
).
Se si desidera elencare tutte le istanze di una classe enum, è necessario passare la classe enum e utilizzare EnumSet.allOf(EnumValues.generalInformation.class)
ad esempio.
La vostra confusione deriva principalmente dal fatto che non rispettate le convenzioni di denominazione Java. ENums sono classi e dovrebbero iniziare con una lettera maiuscola (ad esempio GeneralInformation
). Un'altra fonte di confusione è la cattiva scelta dei nomi. JAVA non è un elenco di corsi. È un corso. Quindi l'enum dovrebbe essere chiamato Course
.
Grazie per le tue informazioni –
Si noti che la domanda ha mescolato due diversi problemi: passare un enum a una funzione o passare una costante Enum a una funzione. La mia comprensione è che si vuole passare l'enum stesso, non una delle costanti alla funzione. In caso contrario: fare riferimento alla risposta di Narendra Pathai su come passare una singola costante enum a una funzione. Se non si sa quale sia la differenza tra un enum e una costante enum è, rivedere il docs su enumerazioni ...
Capisco che ciò che si desidera è di avere una funzione in cui la stampa (o qualsiasi altro) puoi passare qualsiasi enum possibile, per stampare ciascuno dei valori possibili dell'enum (cioè le costanti). Ho trovato i seguenti due approcci per fare questo:
Diciamo che abbiamo la seguente enum:
// The test enum, any other will work too
public static enum ETest
{
PRINT,MY,VALUES
}
Variante 1: passare la matrice delle costanti dal vostro enum alla funzione; Come costanti del enum sono valori statici, possono essere facilmente accessibili e passati alla funzione 'Stampa' come segue:
public static void main(String[] args)
{
// retreive all constants of your enum by YourEnum.values()
// then pass them to your function
printEnum(ETest.values());
}
// print function: type safe for Enum values
public static <T extends Enum<T>> void printEnum(T[] aValues)
{
System.out.println(java.util.Arrays.asList(aValues));
}
Variante 2: Far passare classe del enum come parametro di funzione.Questo potrebbe sembrare più bello, ma essere consapevoli che la riflessione è coinvolto (performance):
public static void main(String[] args)
{
printEnum2(ETest.class);
}
// print function: accepts enum class and prints all constants
public static <T extends Enum<T>> void printEnum2(Class<T> aEnum)
{
// retreive all constants of your enum (reflection!!)
System.out.println(java.util.Arrays.asList(aEnum.getEnumConstants()));
}
A mio parere, è meglio usare Variante 1 a causa del l'uso eccessivo di riflessione in variante 2. L'unico vantaggio che Variante 2 ti dà, è che hai l'oggetto Class dell'Enum stesso (l'enum statico, non solo le sue costanti) all'interno della tua funzione, quindi l'ho menzionato per completezza.
- 1. Passare una classe come argomento a un metodo in java
- 2. Come passare ENUM come argomento di funzione in C
- 3. passare l'auto come argomento in un metodo di supporto
- 4. Come accedere a Java Enum in ColdFusion?
- 5. Come passare argomento in @selector in UITapGestureRecognizer?
- 6. Come passare argomento per delegare metodo in Rails
- 7. Come passare valore enum in @ Html.ActionLink
- 8. subprocess.Popen: come passare un elenco come argomento
- 9. Passare in flag come argomento per re.compile
- 10. Come passare un metodo di classe come argomento per un'altra funzione in C++ e openGL?
- 11. metodo generico in Java senza argomento generico
- 12. Come passare un argomento a un metodo su una variabile di modello in Django?
- 13. Puoi passare un "tipo" come argomento?
- 14. È legittimo passare un argomento come nullo *?
- 15. Come passare una classe parametrizzata come argomento
- 16. Come passare un argomento definito dall'utente in ragno scrapy
- 17. Passare "*()" come argomento a un programma in bash
- 18. C'è un modo per passare auto come argomento in C++?
- 19. metodo enum Java a Delphi
- 20. Come passare un argomento a shortcut array.map?
- 21. passare un tipo come argomento attributo
- 22. Come passare argomento con stella al metodo successivo?
- 23. Passaggio di un enum come argomento nell'azione di caliburn micro
- 24. Passo in un enum come un parametro di metodo
- 25. Come passare un evento a un metodo?
- 26. AsyncTask Android come argomento metodo
- 27. Java: metodo generico per Enum
- 28. Estensione di un enum in Java
- 29. Come passare una funzione casuale come argomento?
- 30. Passare un metodo come parametro
Voglio passare l'intera classe in enum.generalInformation –
Poiché l'enum è uguale a qualsiasi altra classe, vuoi un valore letterale di classe? Poi ho modificato per usare 'Classe >' –
Oppure se vuoi tutte le istanze di classe enum allora usa 'GeneralInformation.values ()' che ti darà GeneralInformation [] che include tutte le istanze di enum –