Java 9 JShell示例:集合静态工厂方法
这篇文章继续了My My Java 9 Features博客文章中对Java9功能的探索。 在这里,我们在List,Set和Map接口中试验Java9 Collections静态工厂方法。
集合静态工厂方法
Java9使用其新的静态工厂方法使创建不可变列表更加容易
有12种Set.of和List.of方法–
- List.of()或Set.of()
- List.of(E e1)或Set.of(E e1)至E e10
- List.of(E…元素)或Set.of(E…元素)
例子
jshell> Set.of()
$1 ==> []
| created scratch variable $1 : Set<Object>
注意将推理作为List对象
要静态
清单
(E e1,E e2,E e3)的–
jshell> List.of("one","two","three")
$2 ==> [one, two, three]
| created scratch variable $2 : List<String>
将推理记录为列表
宾语
参数的数量一直增加到E e10,此时我们可以使用vararg –
静态的
清单
(E ...个元素)
同样,地图定义–
- staticMapof()
- staticMapof(K k1,V v1)到(K k10,V v10)
- staticMapofEntries(Map.Entry
…条目)–注意使用
地图条目
例子
jshell> Map.of()
$12 ==> {}jshell> Map.of("key1", "value1", "key2", "value2")
$13 ==> {key1=value1, key2=value2}
| created scratch variable $13 : Map<String,String>
集合静态工厂方法的特征
这些静态工厂方法列表,集合和映射的共同特征是–
- 从结构上讲是不可变的-尽管元素本身是不可变的,但抛出UnsupportedOperationException
jshell> Set<String> immutableSet = Set.of("one","two","three")
immutableSet ==> [three, two, one]
| created variable immutableSet : Set<String>jshell> immutableSet.add("four")
| java.lang.UnsupportedOperationException thrown:
- 没有空-抛出NullPointerException
jshell> List<Object> notNullList = List.of(null)
| Warning:
| non-varargs call of varargs method with inexact argument type for last parameter;
| cast to java.lang.Object for a varargs call
| cast to java.lang.Object[] for a non-varargs call and to suppress this warning
| List<Object> notNullList = List.of(null);
| ^--^
| java.lang.NullPointerException thrown:
| at List.of (List.java:1030)
| at (#10:1)
- 序列化–如果元素可序列化,则序列化
列出特定特征
- 订单–订单与元素输入保持相同
jshell> List<String> immutableList = List.of("one","two","three")
immutableList ==> [one, two, three]
| created variable immutableList : List<String>
设置特定特征
- 拒绝重复–集合还将在创建时使用IllegalArgumentException拒绝重复–
jshell> Set.of("one","one")
| java.lang.IllegalArgumentException thrown: duplicate element: one
地图特定特征
- 拒绝重复的Keus –映射将拒绝具有IllegalArgumentException的重复键–
jshell> Map.of("key1", "value1", "key1", "value2")
| java.lang.IllegalArgumentException thrown: duplicate key: key1
| at ImmutableCollections$MapN.<init> (ImmutableCollections.java:680)
| at Map.of (Map.java:1326)
| at (#15:1)
- 也不保证迭代
结论
这些是用于创建不可变集合的有用且快速的方法,而jshell为了解新方法及其相关特性提供了良好的测试基础。
翻译自: https://www.javacodegeeks.com/2017/10/java-9-jshell-examples-collections-static-factory-methods.html
Java 9 JShell示例:集合静态工厂方法相关推荐
- java 静态缓存示例_Java 9 JShell示例:集合静态工厂方法
java 静态缓存示例 这篇文章继续从My My Java 9 Features博客文章中探索Java9功能. 在这里,我们在List,Set和Map接口中试验Java9 Collections静态工 ...
- 小鸡爪读Effective Java记录1:用静态工厂方法代替构造器
//小鸡爪 == 菜鸡 遇到多个构造器参数时要考虑使用构建器 Preface 静态工厂和构造器有个共同的局限性:它们都不能很好地扩展到大量的可选参数.比如用一个类表示包装食品外面显示的营养成分标签.这 ...
- 使用静态工厂方法而不是构造器
注意:静态工厂方法不是设计模式中的工厂方法. 一个类向客户端提供静态工厂方法有如下好处: 有名称,不用根据参数类型和顺序区分重载方法,让代码更易读 是否每次调用都需要新对象是可控制的,对于不可修改的对 ...
- 第一条:考虑用静态工厂方法代替构造器
转载链接:https://www.jianshu.com/p/ceb5ec8f1174 1.序:什么是静态工厂方法 在 Java 中,获得一个类实例最简单的方法就是使用 new 关键字,通过构造函数来 ...
- java 方法 示例_Java 9示例–收集的工厂方法–创建不可修改的列表,集合和映射...
java 方法 示例 大家好,这是我在该博客上发表的有关Java 9功能的第一篇文章,今天您将了解我最喜欢的功能"收集的工厂方法" ,它是JEP 269的一部分.JEP代表JDK增 ...
- Java 9示例–收集的工厂方法–创建不可修改的列表,集合和映射
大家好,这是我在该博客上发表的有关Java 9功能的第一篇文章,今天您将了解我最喜欢的功能"收集的工厂方法" ,它是JEP 269的一部分.JEP代表JDK增强建议. 如果您曾经在 ...
- Java 设计模式之静态工厂方法模式
设计模式系列 创建型设计模式 Java 设计模式之单例模式 Java 设计模式之静态工厂方法模式 Java 设计模式之工厂方法模式 Java 设计模式之抽象工厂模式 Java 设计模式之Builder ...
- Java 静态工厂方法详解
Java 静态工厂方法详解 本文章主要是对<Effective Java>对静态工厂方法的理解 第一次使用静态工厂方法是在HIT<Software Construction>课 ...
- 《Effective Java》读书笔记 Item 1:考虑静态工厂方法,而不是构造器
众所周知,要想能获取一个类的实例,该类得要提供一个public的构造器.但是<Effective Java>书中说还有一个方法,那就是提供静态工厂方法(static factory met ...
最新文章
- 事件绑定及解除事件绑定
- mysql mmm 主主_Microsoft Azure部署MYSQL-MMM(2)配置主主复制
- 第一次ScrumMeeting博客:团队任务分解
- android 开发不能创建目录
- C#中读取文件内容本文分步介绍了如何从文本文件
- Android 启动白屏,简单解决方法
- python 高级语言特性_Pytohon学习笔记(一)Python编程语言历史及特性
- 计算一个子网掩码有多少个有效ip地址_一个月有多少个工作日,你会计算了吗?...
- linux数组大小排序,Linux如何使用awk进行数组排序
- 旋转链表 Java,leetcode 旋转链表 Java
- 相关系数法程序设计 opencv C++ CSU
- git添加远程库遇到的问题
- 该更新一下你的密码字典了
- 为什么程序员会秃头?盘点程序员糟心的几大因素
- 云笔记横向评测:印象笔记、有道云笔记、为知笔记、OneNote、Notion
- python 匹配字符串中所有单词并返回下标,python返回字符下标
- 创文明城市在路上,信息报送有高招
- HTTP - get/post请求详解与本质区别总结
- 数据分析 — 用户粘性的两个计算指标(DAU/MAU和月人均活跃天数)
- ROK(万国觉醒)服务器卡顿解决方案