I have a method which accepts a class parameter. I need to create a list of this class objects for any kind of a class. Each class may have a constructor with various number of parameters.
This is what I managed to get so far. It works, but obviously it is not generic enough. Is there a more generic code for this code?
public List<Object> convertSeparatedListToJsonList(String pipedStr, String separatorRegex, Class c){
        try {
                Class<?> cCtor = Class.forName(c.getTypeName());
                List<String> valuesList = Stream.of(pipedStr.split(separatorRegex)).map(String::trim).collect(Collectors.toList());
                int valuesNumber = valuesList.size();
                switch (valuesNumber) {
                    case 1 -> {
                        Constructor<?> ctor = cCtor.getConstructor(String.class);
                        return List.of(ctor.newInstance(valuesList.get(0)));
                    }
                    case 2 -> {
                        Constructor<?> ctor = cCtor.getConstructor(String.class, String.class);
                        return List.of(ctor.newInstance(valuesList.get(0), valuesList.get(1)));
                    }
                    case 4 -> {
                        Constructor<?> ctor = cCtor.getConstructor(String.class, String.class, String.class, String.class);
                        return List.of(ctor.newInstance(valuesList.get(0), valuesList.get(1), valuesList.get(2), valuesList.get(3)));
                    }
                    case 5 -> {
                        Constructor<?> ctor = cCtor.getConstructor(String.class, String.class, String.class, String.class, String.class);
                        return List.of(ctor.newInstance(valuesList.get(0), valuesList.get(1), valuesList.get(2), valuesList.get(3), valuesList.get(4)));
                    }
                    default -> {
                        return new ArrayList<>();
                    }
                }
            } catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e) {
                log.error(e.getMessage());
                return new ArrayList<>();
            }
}
My goal: to generalize the switch part for all list sizes.
 
     
    