Java's typed/generic collections suck are ok, see below:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class TokenTest {
public static void main(String[] args) {
Map<String, List<String[]>> tokenMap = new HashMap<String, List<String[]>>();
List tokenList = tokenMap.get("foo");
for (String[] tokenTerms : tokenList){
System.out.println(tokenTerms);
}
}
}
Then:
$>javac TokenTest.java
TokenTest.java:10: incompatible types
found : java.lang.Object
required: java.lang.String[]
for (String[] tokenTerms : tokenList){
^
1 error
Am I doing something wrong or is Java's typing stupid? Also note that Java didn't understand that ArrayList is a subtype of List when I tried to create a new HashMap<String, ArrayList<String[]>>();.
Update: Jürgen pointed out in a comment that List tokenList should have been List<String[]> tokenList. Problem solved. Thanks!
tokenMap.get() returns not a List, but a List<String[]>. So that line should read
List<String[]> tokenList = tokenMap.get("foo");
if I am not completely mistaken. (but I am new to generics ... so ...:-)