Because it's not, pure and simple. When you create an ArrayList<String>, the object created isn't a String, is it? You seem to be implying that it should be.