He entrado en algo que no había encontrado antes en Java y es que necesito crear una nueva instancia de, por ejemplo, la clase ArrayList en tiempo de ejecución sin asignar un tipo conocido, entonces agregar datos a la lista. Suena un poco vago así que aquí está un ejemplo:Agregando Java a una lista genérica de tipo desconocido
Class<?> c = i.getClass();
Constructor<?> con = ArrayList.class.getConstructor();
ArrayList<?> al = (ArrayList<?>)con.newInstance();
al.add("something");
Ahora, la razón por la que estoy haciendo esto frente a sólo utilizando los genéricos se debe a que los genéricos ya están siendo utilizados en gran medida y la variable "i" en este ejemplo serían dados para usar como tipo "?". Realmente preferiría no agregar otro genérico ya que esto generaría más trabajo para el usuario y sería mucho menos flexible en el diseño final. ¿Hay alguna manera de utilizar algo como a continuación (Nota: lo que está debajo no funciona). Alguien tiene ideas?
ArrayList<c> al = (ArrayList<c>)con.newInstance();
genéricos es para la validación en tiempo de compilación. En tiempo de ejecución, es mejor que no se preocupe por los tipos genéricos y simplemente use una 'ArrayList' no genérica. –
@Bala R Tienes razón, puedo simplemente eliminar los genéricos, me preguntaba si había alguna forma de sacarlo de la clase para garantizar la validación. Gracias, tienes idea, probablemente funcione para mis propósitos. – ars265
Tengo que preguntar, ¿para qué sirve una lista para la que no se conoce el tipo de datos que contendrá? – Bringer128