Вы должны использовать дженерики, когда API предоставляет их. То есть последняя альтернатива предпочтительнее.
Iterator iter = someList.iterator();
String s = (String) iter.next(); // prone to class cast exceptions.
// What if someone for instance accidentally
// put a CharSequence in the list?
против
Iterator<String> iter = someList.iterator();
String s = iter.next(); // guaranteed typesafe at compile-time.
(Строка, однако, не реализует Iterable<String>
, но я уверен, что вы имели в виду что-то вроде List<String> my = Arrays.asList("Which form shall I use?")