ch46485f 2011-10-23 19:58
浏览 184
已采纳

关于多态 List

  之前声明一个List的时候都是List list = new ArrayList(); 一直没考虑过为什么要这么做,这样从多态的角度看有什么好处。
  • 写回答

4条回答 默认 最新

  • iteye_6273 2011-10-24 11:24
    关注

    [quote]之前声明一个List的时候都是List list = new ArrayList(); 一直没考虑过为什么要这么做,这样从多态的角度看有什么好处。[/quote]

    对于List list = new ArrayList();这种写法,你使用list时只能使用List接口本身的方法(编译期);在运行期,jvm会根据具体的实现来选择某一特定的类,但是这本身会消耗一定的性能,可参考[url=http://boy00fly.iteye.com/blog/1158854]Java method invoke的指令简介 [/url]。但是这能够带来什么样的好处呢?你可以在你的业务需要变化的时候,很方便的替换你的实现,比如List list = new LinkedList();,不必为了引入ArrayList特有的方法而烦恼,即多态的概念。(当你使用ArrayList list = new ArrayList();时,并且使用ArrayList特有的方法时)

    最后,要以辩证的思维来分析问题,问题本身并不是绝对的,解决问题的方案也不是绝对的,会随着时间、业务等因素的变化而变化的,你要做的就是按理出牌。 :D

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘