Można użyć Generic methods
public <T> void insertData(Class<T> clazz, String fileName) {
List<T> newList = new ArrayList<>();
}
ale czy należy skorzystać z tej umowy insertData(String className, String fileName)
, nie można użyć rodzajowych, ponieważ typ elementu listy nie może być rozwiązany w czasie kompilacji przez Java.
W tym przypadku można nie wykorzystać rodzajowych w ogóle i wykorzystać odbicie sprawdzić typ przed umieszczeniem go na liście:
public void insertData(String className, String fileName) {
List newList = new ArrayList();
Class clazz;
try {
clazz = Class.forName(className);
} catch (ClassNotFoundException e) {
throw new RuntimeException(e); // provide proper handling of ClassNotFoundException
}
Object a1 = getSomeObjectFromSomewhere();
if (clazz.isInstance(a1)) {
newList.add(a1);
}
// some additional code
}
ale bez informacji o klasie jesteś w stanie używać tylko Object
bo ciebie nie mogę rzucić obiektu do UnknownClass w twoim kodzie.
Czy to ma być 'String className'? Byłoby łatwiej, gdybyś mógł przekazać rzeczywisty obiekt 'Class', np.' InsertData (ExampleClass.class, fileName) '. – nickb
Nie wiem, którą klasę przechodzę. – Greymarch