Una clase Java contiene una variable de instancia que es una List
. Necesito fijar el tipo de objeto que esto List
tiene en una String
variable.
private List<VARIABLE> myList; String VARIABLE = "BasicDegreeClass";
Se esta permitido hacer en JAVA Si es así, ¿cómo se puede lograr esto?
Gracias por adelantado
En primer lugar, usted tendrá que crear una lista donde T es el tipo de objetos que figuran en la lista.
Por lo tanto, el código debe decir lo
private List<T> myList;
Desde el javadoc,
<T> the type of elements in this list.
En su caso, el compilador no sabrá el tipo de elementos que se va a agregar a su lista y por lo tanto no va a funcionar.
Sin embargo se puede utilizar List<Object>
como una alternativa, pero que es un código general-olor en el largo plazo y muy difícil de mantener
- Se mata a la idea de los genéricos.
- Hace que su código propenso a ClassCastException.
- En un mundo perfecto e incluso si está a salvo mientras la adición de elementos, tendrá que suprimir la advertencia en todas partes y la necesidad de volver conversión al tipo.
Solución adecuada : Se puede escribir una interfaz, que todos los objetos de la ArrayList se adherirán a. Proceder con algo como
List<'YOUR INTERFACE TYPE HERE'> myList = new ArrayList<>();
¿No te tiene que preocuparse del tipo de objeto dentro de la lista. ¡Espero que esto ayude!
Si está demasiado específica para guardar en cadena, aquí es una solución.
public static <T> List<T> getCastedList(List<Object> objList, Class<T> clazz) {
List<T> newList = new ArrayList<T>();
if (objList != null) {
for (Object object : objList) {
if (object != null && clazz.isAssignableFrom(object.getClass())) {
newList.add((T) object);
}
}
}
return newList;
}
Y llamar a esto como
getCastedList(myList, Class.forName(VARIABLE));