//System.out.println( ((List) ((List)(test3.get(0).get(0))).get(0)).set(0,"cow") );
Break this down into single statements like the following:
Type1 var1 = var0.method();
Type2 var2 = var1.method();
Type3 var3 = var2.method();
etc
Then you can see what method of what class is being used.
Here's working code, but don't have good generics usage. Not sure if your approach is correct.
|
Code:
|
//how do i change the value from "pig" to "cow"
// Involves type checking and generics
import java.util.*;
public class TestIndexingLists {
public static void main(String[] args) {
ArrayList<String> test = new ArrayList<String>();
List<List> test2 = new ArrayList<List>();
List<List> test3 = new ArrayList<List>();
test.add("pig");
test2.add(test);
test3.add(test2);
//------------------------------------------------------------------------
// get reference to test starting at test3
List list_test2 = test3.get(0);
System.out.println((test2 == list_test2) + " list_test2:"
+ list_test2.getClass()); // true list_test2:class java.util.ArrayList
//-----------------------------------------------------------------------
// ArrayList<String> list_testX = (ArrayList<String>)((ArrayList<List>)test2).get(0);
ArrayList<String> list_testX = (ArrayList<String>)test2.get(0);
//TestIndexingLists.java:24: warning: [unchecked] unchecked cast
//found : java.util.List <<< NB a List for test2 (a List<List>)
//required: java.util.ArrayList<java.lang.String>
// ArrayList<String> list_testX = (ArrayList<String>)test2.get(0);
// ^
ArrayList<String> list_test = (ArrayList<String>)list_test2.get(0);
//TestIndexingLists.java:26: warning: [unchecked] unchecked cast
//found : java.lang.Object <<<< NB Object for list_test2 (a List<Object>)
//required: java.util.ArrayList<java.lang.String>
// ArrayList<String> list_test = (ArrayList<String>)list_test2.get(0);
// ^
//TestIndexingLists.java:21: inconvertible types
//found : java.util.List<java.util.List>
//required: java.util.ArrayList<java.lang.String>
// ArrayList<String> list_test = ((ArrayList<String>)test2).get(0);
// ^
// Changed source by removing ()before .get()
//TestIndexingLists.java:23: warning: [unchecked] unchecked cast
//found : java.lang.Object
//required: java.util.ArrayList<java.lang.String>
// ArrayList<String> list_test = (ArrayList<String>)list_test2.get(0);
// ^
System.out.println(test == list_test); // true
System.out.println(list_test); // [pig]
list_test.set(0, "cow"); // change pig to cow
System.out.println(list_test); // [cow]
}
} |