为啥用List list=new ArrayList()生成

问题描述

一般编写代码,需要用ArrayList对象时,都会像下面一样生成:List list = new ArrayList();这样写主要是符合了java面向对象的思想但有次编写代码时,需要使用到ArrayList的clone方法,而这个方法是在ArrayList中定义的,在List这个接口中并没有这时让我感到很困惑,本来这样生成ArrayList对象是很提倡的,可是却局限了ArrayList的使用方法不知道各位大神,是否能解开小弟困惑,又或者有其他方式使用实现类自己的方法

解决方案

java提倡面向接口编程 不面向实现编程这样可以充分利用java的多态特性 实现与具体对象的解耦 同时能够做到在运行时的时候才确定具体执行的操作。但是就像你所提到当前情况,没有什么东西是一成不变的,这才是写程序的乐趣,另外针对你刚说到的这个情况,你可以在程序中用强制类型转换去调用(ArrayList)list.clone()。
解决方案二:
clone()方法是Object类保护方法,所以你调不动的,要调用重新向下造型list到原本的实现类,然后调用即可,克隆接口就不知道怎么理解了
解决方案三:
看书,结果进去了,出不来了?
解决方案四:
这是官网上一段解释first, List is an interface, it does not extend Object which has the clone method internally second, list object does not have the method which exists in the List interface's implementation class ArrayList though.
解决方案五:
List 定义的接口, ArrayList 是具体实现类。 clone方式从Object对象集成。 List接口是不会定义clone方法。推荐看看Java编程思想,从目录你会找到你感兴趣的章节。

时间: 2025-01-29 17:24:19

为啥用List list=new ArrayList()生成的相关文章

Java打乱ArrayList生成一个随机序列列表_java

前言 在做试卷的时候,需要将一个句子中的单词.一个单词中的字符.选择题中的答题项打乱生成一个随机的序列,下面我将其抽象成工具类,方便大家以后复用. 示例代码 public static <V> boolean isEmpty(ArrayList<V> sourceList) { return (sourceList == null || sourceList.size() == 0); } /** * 打乱ArrayList * * */ public static <V&g

Java集合框架ArrayList源码分析(一)_java

ArrayList底层维护的是一个动态数组,每个ArrayList实例都有一个容量.该容量是指用来存储列表元素的数组的大小.它总是至少等于列表的大小.随着向 ArrayList 中不断添加元素,其容量也自动增长.  ArrayList不是同步的(也就是说不是线程安全的),如果多个线程同时访问一个ArrayList实例,而其中至少一个线程从结构上修改了列表,那么它必须保持外部同步,在多线程环境下,可以使用Collections.synchronizedList方法声明一个线程安全的ArrayLis

rid iew-用Arraylist加载Gridview

问题描述 用Arraylist加载Gridview 主Activity package com.example.mygridview; import java.util.ArrayList; import java.util.HashMap; import android.app.Activity; import android.os.Bundle; import android.widget.GridView; import android.widget.SimpleAdapter; publ

redis持久化问题,修改dump快照配置文件不产生预期效果

问题描述 redis持久化问题,修改dump快照配置文件不产生预期效果 redis修改了配置文件rdb存放位置, 用redis-benchmark执行10000次命令,为啥在指定路径下不生成dump.rdb文件? 具体操作如下: 在redis-conf中修改: 1.save 60 3000 2.dir /var/rdb #此路径我已经mkdir 然后,kill掉redis进程,重启redis-server,借用redis自带的压力测试工具,执行10000次命令: ./bin/redis-benc

请求解决一个问题,html网页传值的问题

问题描述 <li><ahref="admin-userEdit.aspx?id={userid}">1.编辑</a></li>通过获取userid传递列表的值.但是我在接收的时候用intid=Convert.ToInt32(Request.Form["id"]);或者request.QueryString都无法接收到传值如何解决?谢谢了. 解决方案 解决方案二:你这个是通过Get方式传递,那么应该通过Request.Q

ScrollView嵌套ListView滑动冲突的解决方法_Android

ScrollView和ListView这两个控件想必大家都不会陌生,但是这两者嵌套使用的时候就会出现麻烦.比如,我们如果想在ListView下面添加其他的布局或者控件,然后想让它们作为一个整体都可以滑动的话,最常想到的就是用一个ScrollView把它们包裹起来.想法似乎很美好,但是现实就有点残酷了.我们可以写一个小例子体验一下. 首先创建一个Activity,在它的布局文件上放置一个ListView: <?xml version="1.0" encoding="utf

ScrollView嵌套ListView滑动冲突的解决方法

ScrollView和ListView这两个控件想必大家都不会陌生,但是这两者嵌套使用的时候就会出现麻烦.比如,我们如果想在ListView下面添加其他的布局或者控件,然后想让它们作为一个整体都可以滑动的话,最常想到的就是用一个ScrollView把它们包裹起来.想法似乎很美好,但是现实就有点残酷了.我们可以写一个小例子体验一下. 首先创建一个Activity,在它的布局文件上放置一个ListView: <?xml version="1.0" encoding="utf

微信公众号开发,用的separc SDK,想用下图文消息的封面图片ID为啥在生成之后改变了?

问题描述 图文消息生成传入了{"thumb_media_id":"ndJR-lDoLuPt_UPJW6p9n_g5--R5TqfBb8jVTLuqUjY","author":"1321","title":"132","content_source_url":"","content":"<p>3213123&

android 为啥父类不闪退,但我重新写了个子类后,程序闪退?

问题描述 android 为啥父类不闪退,但我重新写了个子类后,程序闪退? 求教各位大神,下面的是我的一个ViewPager的安卓小程序,如大家所见现在这个android代码是能正常运行的,但当我将代码中所有父类 "ViewPager" 换成 子类 "NoScrollViewPager" 后,程序一打开就闪退... 为啥换了个子类就会闪退啊... package com.example.testviewpagerandtabhost; public class Ma