我是java新手,刚学到泛型就有点朦了,请问为什么以下这个程序有书上说会有问题?

DsdfsadfSADGSDF 2015-03-04 01:09:43
rt


package j2se;

import java.util.*;

public class test2 {

public static void main(String[] args) {
// TODO Auto-generated method stub
Collection<Integer> collection = new ArrayList<Integer>(Arrays.asList(1, 2, 3, 4, 5));

Integer[] moreInts = { 6, 7, 8, 9, 10 };
collection.addAll(Arrays.asList(moreInts));

Collections.addAll(collection, 11, 12, 13, 14, 15);
Collections.addAll(collection, moreInts);

List<Integer> list = Arrays.asList(16, 17, 18, 19, 20);
list.set(1, 99);
list.add(21);
}

}



运行后是出现:
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.add(Unknown Source)
at java.util.AbstractList.add(Unknown Source)
at j2se.test2.main(test2.java:19)

这样一个错误:我判断过是list.add(21);这行有错,我不懂为什么会出错?书上又说得不明白

而且书上有这样一个代码截图:


紫色部分说这部分有错,但我运行却没问题啊,为什么它会这样写。

另外我觉得java编程思想这本书讲泛型时真的很不好,翻译得一坨屎,网上的资料基本上也是说不清楚的,请问各位大神有没有讲泛型入门好而且讲得很详细的介绍下给小弟,感激不尽~~
...全文
499 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
DsdfsadfSADGSDF 2015-03-06
  • 打赏
  • 举报
回复
引用 11 楼 Zero12300 的回复:
thinking in java里说过,Array.aslist返回的是一个固定大小的list
对啊,我看的就是thinking in java 第四版,但我想知道Arrays$ArrayList这个里面是怎么样的……
scmod 2015-03-06
  • 打赏
  • 举报
回复
引用 12 楼 DsdfsadfSADGSDF 的回复:
[quote=引用 11 楼 Zero12300 的回复:] thinking in java里说过,Array.aslist返回的是一个固定大小的list
对啊,我看的就是thinking in java 第四版,但我想知道Arrays$ArrayList这个里面是怎么样的……[/quote] 按住ctrl打开Arrays,搜下ArrayList就知道了
DsdfsadfSADGSDF 2015-03-05
  • 打赏
  • 举报
回复
引用 2 楼 u012818881 的回复:
Arrays.asList初始化的list你看他内部实现源码,返回的是Arrays的内部类实现,本身并没有实现add()方法,所以报错说不支持此方法!所以以后有啥错误都debug到源码一目了然!
但书截图上说的紫色框住的为什么说不可以这样做?明明这样做也没错
DsdfsadfSADGSDF 2015-03-05
  • 打赏
  • 举报
回复
引用 2 楼 u012818881 的回复:
Arrays.asList初始化的list你看他内部实现源码,返回的是Arrays的内部类实现,本身并没有实现add()方法,所以报错说不支持此方法!所以以后有啥错误都debug到源码一目了然!
哦,您的意思是:因为java规定普通数组都是不可随意变大小的,所以这个返回的是普通数组,所以就不适用add()了,是吧?! 不过我看手册上返回的是<T> List<T>这样的喔,也是list吧?
DsdfsadfSADGSDF 2015-03-05
  • 打赏
  • 举报
回复
引用 3 楼 a5987995329 的回复:

List<Integer> list=Arrays.asList(16,17,18,19,20);
System.out.println(list.getClass());

//out
class java.util.Arrays$ArrayList
java.util.Arrays$ArrayList并非 java.util.ArrayList
请问Arrays$ArrayList是什么意思?我查过百度说:“只是为了序列化写的一个内部类”,为什么会说是序列化?这个很不明白
nicholasbobo 2015-03-05
  • 打赏
  • 举报
回复
List<Integer> list = Arrays.asList(16, 17, 18, 19, 20);这句创建的列表的大小是固定的,删除添加都会报错
zero12300 2015-03-05
  • 打赏
  • 举报
回复
thinking in java里说过,Array.aslist返回的是一个固定大小的list
DsdfsadfSADGSDF 2015-03-05
  • 打赏
  • 举报
回复
引用 9 楼 scmod 的回复:
Arrays.asList返回的类型不是ArrayList 是个别的类,那个类没实现add()方法,所以调用就会有问题
个别的类在手册上可以查到吗?
scmod 2015-03-05
  • 打赏
  • 举报
回复
Arrays.asList返回的类型不是ArrayList 是个别的类,那个类没实现add()方法,所以调用就会有问题
DsdfsadfSADGSDF 2015-03-05
  • 打赏
  • 举报
回复
引用 7 楼 nicholasbobo 的回复:
List<Integer> list = Arrays.asList(16, 17, 18, 19, 20);这句创建的列表的大小是固定的,删除添加都会报错
那意思是不是我上面所说的:因为java规定普通数组都是不可随意变大小的,所以这个返回的是普通数组,所以就不适用add()了?
七宝 2015-03-04
  • 打赏
  • 举报
回复

List<Integer> list=Arrays.asList(16,17,18,19,20);
System.out.println(list.getClass());

//out
class java.util.Arrays$ArrayList
java.util.Arrays$ArrayList并非 java.util.ArrayList
汉高祖 2015-03-04
  • 打赏
  • 举报
回复
Arrays.asList初始化的list你看他内部实现源码,返回的是Arrays的内部类实现,本身并没有实现add()方法,所以报错说不支持此方法!所以以后有啥错误都debug到源码一目了然!
DsdfsadfSADGSDF 2015-03-04
  • 打赏
  • 举报
回复
还有一个Arrays.asList(),这个必须要用的吗?还是只是另外一种初始化方式而已 ……
已经博主授权,源码转载自 https://pan.quark.cn/s/008193215f29 在处理英文PDF文献进行阅读和翻译的过程中,常常会碰到一个挑战:文档内的换行标记可能干扰翻译的精确度。 这一现象的产生源于谷歌翻译等在线翻译服务在解析含换行符的内容时,常将其错误地解读为语句的终止点,进而引发翻译结果的偏差。 为了应对这一难题,我们可以运用若干实用策略来改善翻译流程。 下面介绍一种行之有效的方法:首先,需要将英文PDF文献中的文字信息进行复制。 这一操作可以通过两种途径实现:1. 利用PDF转WORD软件:众多第三方应用程序例如Adobe Acrobat或在线转换平台,能够协助我们将PDF资料转化为Word文档,从而获取无换行符的纯文本格式。 2. 直接从PDF文档提取:倘若PDF文件具备编辑属性,用户可以选取文本并执行复制动作,尽管这种方式有时仍会保留换行符,但后续可进行相应处理。 随后,建议采用WPS Office(国产办公应用)进行深入编辑。 WPS具备卓越的文本处理能力,可协助我们清除换行标记并优化段落布局。 具体操作步骤如下:1. 下载并安装WPS Office。 若个人电脑尚未安装该软件,可从其官方网站获取并完成安装流程。 2. 启动WPS的文字编辑模块。 在WPS中创建一个新文档,并将从PDF复制的文本粘贴至其中。 3. 在WPS的界面顶部,定位“开始”功能键,并点击进入。 4. 在“开始”功能区下,查找“文字工具”选项。 此功能集合提供了多种实用工具,有助于解决各类文本难题。 5. 在“文字工具”内,识别“删除空格”功能。 此步骤旨在移除文本中的所有空白字符,包括由换行产生的额外空格。 6. 继续选择“段落重排”功能。 该操作将依据实际语境自动调整文本的分句方式,确保每个句子的完整...

62,622

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧