If you were only reading the values out of the Map you could have done something like this:
public static Report createReport(Map<String,?> parameters) {...}
However, since you also want to add enteries, you need to know the type, or at least be able to know that the type in the Map is the same as the type you are adding.
If it is variable, then I would suggest having another parameter that does the conversion to the type you need.
interface Converter<T>{
T convert(Object o);
}
Then add that parameter to your createReport
method like this:
public static <T> Report createReport(Map<String,T> parameters, Converter<T> converter) {...}
Then inside your method you can do something like this:
T value = converter.convert(foo);
parameters.put(key, value);
It would then be up to the caller of createReport
to provide the correct converter.