When should one of these be preferred to another?
public static void doStuffWithIt_A( Map<Integer, ? extends Object > theThings){ ...}
public static void doStuffWithIt_B( Map<Integer, ? > theThings){ ...}
public static void doStuffWithIt_C( Map<Integer, Object > theThings){ ...}
I've been using a variable parameters passing interface in java, inspired by python's "**kw"argument syntax, and I'm trying to get it 'more right'