I fail to see why you will not just call the microflow directly as a submicroflow, but assuming your java code just passes the parameters to the microflow call, why not add a check to see if the parameter is left empty and then pass a default value in its place?
It would be better still to create a submicroflow instead of a java action and place the logic there so that you don't introduce invisible code and having to mark microflows as 'used'.