Возможно, не отвечая на вопрос о том, как реализовать решение, но есть библиотека, которая делает именно это (то есть имеет почти идентичный API в соответствии с запросом).Он называется type-parser и может быть использован примерно так:
TypeParser parser = TypeParser.newBuilder().build();
Integer i = parser.parse("1", Integer.class);
int i2 = parser.parse("42", int.class);
File f = parser.parse("/some/path", File.class);
Set<Integer> setOfInts = parser.parse("1,2,3,4", new GenericType<Set<Integer>>() {});
List<Boolean> listOfBooleans = parser.parse("true, false", new GenericType<List<Boolean>>() {});
float[] arrayOfFloat = parser.parse("1.3, .4, 3.56", float[].class);