如东县2016年财政收入:17.4.1 未获支持的操作

来源:百度文库 编辑:中财网 时间:2024/05/02 06:24:54

17.4.1 未获支持的操作
最常见的未获支持的操作,都来源于背后由固定尺寸的数据结构支持的容器。当你用Arrays.asList()将数组转换为List时,就会得到这样的容器。你还可以通过使用Collections类中“不可修改”的方法,选择创建任何会抛出UnsupportedOperationException的容器(包括Map)。下面的示例包括这两种情况:

因为Arrays.asList()会生成一个List,它基于一个固定大小的数组,仅支持那些不会改变数组大小的操作,对它而言是有道理的。任何会引起对底层数据结构的尺寸进行修改的方法都会产生一个UnsupportedOperationException异常,以表示对未获支持操作的调用(一个编程错误)。
注意,应该把Arrays.asList()的结果作为构造器的参数传递给任何Collection(或者使用addAll()方法,或Collections.addAll()静态方法),这样可以生成允许使用所有的方法的普通容器—这在main()中的第一个对test()的调用中得到了展示,这样的调用会产生新的尺寸可调的底层数据结构。Collections类中的“不可修改”的方法将容器包装到了一个代理中,只要你执行任何试图修改容器的操作,这个代理都会产生UnsupportedOperationException异常。使用这些方法的目标就是产生“常量”容器对象。“不可修改”的Collections方法的完整列表将在稍后介绍。
test()中的最后一个try语句块将检查作为List的一部分的set()方法。这很有趣,因为你可以看到“未获支持的操作”这一技术的粒度来的是多么方便—所产生的“接口”可以在Arrays.asList()返回的对象和Collections.unmodifiableList()返回的对象之间,在一个方法的粒度上产生变化。Arrays.asList()返回固定尺寸的List,而Collections.unmodifiableList()产生不可修改的列表。正如从输出中所看到的,修改Arrays.asList()返回的List中的元素是可以的,因为这没有违反该List“尺寸固定”这一特性。但是很明显,unmodifiableList()的结果在任何情况下都应该不是可修改的。如果使用的是接口,那么还需要两个附加的接口,一个具有可以工作的set()方法,另外一个没有,因为附加的接口对于Collection的各种不可修改的子类型来说是必需的。
对于将容器作为参数接受的方法,其文档应该指定哪些可选方法必须实现。
练习6:(2) 注意,List具有附加的“可选”操作,它们不包含在Collection中。编写一个Unsupported.java版本,测试这些附加的可选操作。

请求的操作未执行 HPze2202笔记本电脑的bioss支持自动开机吗?操作步骤 3230支持什么样的影音播放,怎么操作? 软件可使游戏支持游戏手柄的操作? sqlserver里支持对中文字段的插入操作么 kmp不是说可以播放未下载完的文件吗?那么怎样操作呢? {求助}为什么我的诺基亚PC套件打开 phone memory时总说操作未成功? 请教:打算把一个已拆箱但未拼装的足浴桶卖掉,如何操作最方便? 未申领U盾可否在工行网银直接进行活期转定期的操作? 朋友们,有什么软件可以查出未安装的声卡型号,感谢朋友的支持 未安装打印机驱动程序 操作无法完成 给哥哥未出生的孩子起名 谢谢各位支持 大概在有1个月就要生了,哥哥姓 肖 我的电脑主板支持AGP2.0,但又显示未启用是怎么回事 xp sp2 不能正常进入系统的问题(提示未找到核心支持库) 一个新的大容量硬盘(未分区,无操作系统)你将如何安装(包括硬,软件操作)谁可以告诉我操作步骤啊? 我的光驱是支持DVD的,请问能不能刻录光盘?若能应怎样操作? 我将打算从事房地产的讲师,需要如何操作?我需要各位朋友的支持。 管理站之间的通信有什么意义?需要什么管理操作的支持? 索尼爱立信j210c手机的操作平台及所支持的所有文件格式? 求助一个(支持双打,可更改操作键盘)的游戏的网址。 我的MSN上提示我“电子邮件地址未验证”我按上面的步骤操作没有成功请问该怎么办 我的MSN上提示我“电子邮件地址未验证”我按上面的步骤操作没有成功请问该怎么办 我装了98可为什么在分区盘里操作的时候会出现未响应 未启用对系统目录的特殊更新。系统管理员必须重新配置 SQL Server 以允许这种操作