卡卷网
当前位置:卡卷网 / 每日看点 / 正文

java的arraylist,为什么要创建list,不直接用arraylist?

作者:卡卷网发布时间:2025-01-12 18:16浏览数量:84次评论数量:0次

因为某J字头语言的社区普遍喜欢通过脱裤子放屁的多余行为来表现自己的深谋远虑。

考虑到Java的List绝大部分时候只有两个实例,其中99%的场合你只会用到ArrayList,而几乎不会有使用LinkedList或者new一个匿名List的场合,这个问题的正确回答不是「创建List有什么理由」,而是,这个选择只是一个社区的惯性,它背后没有任何值得深挖或反思的哲学道理。

你爱用List<X>就用List<X>,你想用ArrayList<X> foo = new ArrayList<>也不应该有人拦你——如果你的团队里的组员对Java有稍微良好的理解而不是满足于人云亦云的话。

话说过来接口实现分离本来是个好文明,甚至有许多场合确实有把单一实现抽象出一个接口来方便解耦合以及合理组织代码的需要。比如说,我想实现一个简单的解释器,需要实现一个typing的模块,按理说我只需要一个实例,但是随着项目日渐复杂,抽离出接口,而其他模块只需要知道接口长啥样而不需要知道typing具体实现,也就成了一个很自然的演化了。但是在List<X> foo = new ArrayList<>这个场合下,除了脱裤子放屁,我想不到别的描述了。

再进一步说,我为什么要关心我的list到底是List还是ArrayList还是永远用不到的LinkedList或者new的匿名List?要不是Java里几乎没人用var,我巴不得直接写var list = new ArrayList<Integer>()。

本来不想回答的,不过这问题老是推我首页上,然后一看一水的复读设计模式和哲学的,有点ptsd了。

END

免责声明:本文由卡卷网编辑并发布,但不代表本站的观点和立场,只提供分享给大家。

卡卷网

卡卷网 主页 联系他吧

请记住:卡卷网 Www.Kajuan.Net

欢迎 发表评论:

请填写验证码