Strange situation - below is the code:
ArrayList<String[]> listArr = new ArrayList<>();
Object[] obj = new Object[]{"str", listArr};
String str = (String) obj[0];//OK
ArrayList<String[]> list = (ArrayList<String[]>) obj[1];//warning: [unchecked] unchecked cast
When project is built (with compiler option -Xlint:unchecked
in project properties), I get one warning:
warning: [unchecked] unchecked cast
ArrayList list = (ArrayList) obj[1];
required: ArrayList
found: Object
But casting String in the same way is OK. What is the problem here?
This is because the compiler can not verify the internal types at the list level, so you need to first verify for list. And the internal types individually.
Instead of ArrayList<String[]> list = (ArrayList<String[]>) obj[1];
It should be
ArrayList<?> list = (ArrayList<?>) obj[1];
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With