8
ho scritto il seguente metodopassano tipo enum generico come parametro (java)
@SuppressWarnings("unchecked")
protected <E extends Enum<E>> void populateComboWithEnumValues(Combo combo, E enumData, String defaultSelectionValue) {
// populate commbo
for (Enum<E> enumVal: enumData.getClass().getEnumConstants()) {
combo.add(enumVal.toString());
}
// select default selection
for (Enum<E> enumVal: enumData.getClass().getEnumConstants()) {
if(enumVal.toString().equals(defaultSelectionValue)) {
try {
combo.select((Integer) enumVal.getClass().getMethod("getSelectionIndex").invoke(enumVal));
} catch (IllegalArgumentException e) {
LOGGER.debug("an IllegalArgumentException exception occured");
} catch (SecurityException e) {
LOGGER.debug("an SecurityException exception occured");
} catch (IllegalAccessException e) {
LOGGER.debug("an IllegalAccessException exception occured");
} catch (InvocationTargetException e) {
LOGGER.debug("an InvocationTargetException exception occured");
} catch (NoSuchMethodException e) {
LOGGER.debug("an NoSuchMethodException exception occured");
}
}
}
Come posso passare diversi tipi enum al secondo argomento? So che non posso creare un'istanza di enum, ma inizializzare un enum significa che passerò un singolo valore non l'intero enum inizializzato come segue ... Altre enumerazioni sarebbero anche passate allo stesso metodo per le specifiche Combo
public enum ServerEnvironmentName {
/**
* The CFD environment name.
* Selection Index
*/
CFD("CFD", 0),
/**
* The PIT environment name.
* Selection Index
*/
PIT("PIT", 1),
/**
* The SIT environment name.
* Selection Index
*/
SIT("SIT", 2),
/**
* The DEV environment name.
* Selection Index
*/
DEV("DEV", 3);
/** The input string to identify the environment. */
private String envURL;
/** The index value for view selection.*/
private int selectionIndex;
/**
* Enum constructor to initialise default values.
*
* @param selectionIndex index value for view selection
* @param envURL input parameter for environment
*/
ServerEnvironmentName(String envURL, int selectionIndex) {
this.envURL = envURL;
this.selectionIndex = selectionIndex;
}
/**
* Getter for the envURL.
*
* @return the environment string
*/
public String getEnvironmentUrl() {
return envURL;
}
/**
* This method returns the index of the enum value.
*
* @return the selection index
*/
public int getSelectionIndex() {
return selectionIndex;
}
}