有人可以解释一下为什么我不能用第一种方法将 List<>
投射到 ArrayList<>
而我用第二种方法吗?谢谢你。
第一种方法:
ArrayList<Task> tmp = ((ArrayList<Task>)mTrackytAdapter.getAllTasks(token));
第二种方法:
ArrayList<Task> tmp = new ArrayList<Task>(mTrackytAdapter.getAllTasks(token));
原文由 Eugene 发布,翻译遵循 CC BY-SA 4.0 许可协议
当你做第二个时,你正在制作一个新的数组列表,你不会试图假装另一个列表是一个数组列表。
我的意思是,如果将原始列表实现为链表或某些自定义列表怎么办?你不会知道的。如果您确实需要从结果中创建一个数组列表,则首选第二种方法。但是您可以将其保留为列表,这是使用接口的最大优势之一!