D would have been correct, if instead of List<String> myList = new ArrayList<String>(); we had List myList = new ArrayList(); Generics were introduced only in java 1.5. The question is tricky, since you are focusing on assertion, but the catch is with usage of generics
Suppose, we are using Java 6 to compile.
B and E will compile, but it will throw the error as there is no argument from the command-Line.
assert (args.length>0) will be false and print an AssertionError message.