establecer mediante programación un identificador de lista

Niaz Ahsan:

Una clase Java contiene una variable de instancia que es una List. Necesito fijar el tipo de objeto que esto Listtiene en una Stringvariable.

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

Mohamed Anees A:

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));

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=187439&siteId=1
Recomendado
Clasificación