Вы можете использовать Generic methods
public <T> void insertData(Class<T> clazz, String fileName) {
List<T> newList = new ArrayList<>();
}
, но если вы должны использовать этот контракт insertData(String className, String fileName)
, вы не можете использовать дженерики, потому что тип элемента списка не может быть решена в компиляции с помощью Java.
В этом случае вы можете не использовать дженерики вообще и использовать отражение для проверки типа, прежде чем положить его в список:
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
}
но без информации о классе вы сможете использовать только потому, что вы Object
не может передать ваш объект UnknownClass в ваш код.
ли это быть 'Струнный className'? Было бы проще, если бы вы могли передать фактический объект класса, например 'insertData (ExampleClass.class, fileName)'. – nickb
Я не знаю, какой класс я передаю. – Greymarch