00:00
下一个下一个呢,提到叫工厂集合,工厂方法,这呢就涉及到这个集合这个结构了,在这个集合里边的话呢,我们这个以前呢,倒是没讲过这个事啊,说叫创建一个叫只读集合,什么叫只读集合呢?就是你只能读不能变呗,就像我们有的文件呢,说你这是一个只读文件,1G,你就不可以往里写,不可以去改,哎,这叫只读的,那我们在这个Java里边创建集合的话呢,也可以去创建叫只读性质的集合,哎,就这个意思,怎么创建呢?这里边有个这样的代码啊,我这呢就呃不想说这个事了,咱们主要说的是新特性啊,所以这个旧的呢,我就直接拿过来了,嗯,咱们还找到咱们写代码的这个位置啊,挺多了,那都close off吧,这个呢收起来。还拿了我们这个JAVA9的这个test。嗯,这个呢,有点多了,再重新写一个。哎,JAVA9的一个test一行,这个呢,是咱们这个新特性的八。
01:06
哎,这个呢,我们是这个集合,诶工厂方法,通过这样的方法呢,去创建叫只读,哎只读这个集合啊这样的方式,先看一下我们之前的这个方式。那这呢,CTRLV直接把这个代码粘过来,这个呢,这个换行符它是识别成一个这样的符号了,这个我直接手动的去调整一下啊,Ctrl shift f一下,OK,我们看一下这呢是造了一个release,然后呢往里边添加了几个字符串,那这个字符串的话呢,你可以不断往里加,这就相当于是一个可去写的啊,但是如果呢,我们调这个collections,这是工具类里边有个方法叫unmodfiable list。啊,Modify这是一个核心的词,修改的意思啊,UN modify不能修改,Able形容词嘛,就不能修改的一个list,把这个扔进去以后,诶,此时呢,你这个list得到的这个啊,就只能是读,我们这时候呢,去输出一下,当然呢,还是能输出里边存储的数据的,当你得到这个name list在这块呢,它就变成可读的,只读的了啊,你如果试图对这个names list进行一个再添加,这就相当于又写入数据了。
02:25
哎,这呢,比如我们写一个这个Tom进去,这个时候呢,就报错了,哎执行,嗯,编译不报错啊执行。你看这张看就出这样一个错错误啊unspared啊,Operation是不支持的一个操作方式的一个异常,哎,就说明你不能够去修改啊,说我们这个应该是往上一步啊啊得到的或者叫返回的,咱们这个name是list,哎,是一个只读的一个集合啊在很多时候呢,我们呃都有这样的需求,去创建一个集合,只让他读,不能再往里写了。
03:04
哎,就这样的特点,你就呢,可以使用这样的方式来做,哎就这样的好几步,那它怎么表明叫只读呢?其实大家也可以看一下哈,哎这个我们看一下源码,比如说这个点进去,把我们这个list呢,这不就放进来了啊放进来以后呢,它这块说你这个list in instance of它哎说这个是它的一个,呃,实例吗?哎这怎么还有一个叫reno max access呢?啊那这里边你就得想到了,你这个list,它是你的这个行参,哎行参说这个行参呢,是不是一个,他这呢一看又是一个接口。啊,还是个标识接口,哎,那标识接口呢,那我们看一下谁呢,回到我们的代码层面,咱那个list史呢,点进去啊继承了它再往上走,再往上走,这块看不着了,看不到了是吧?那你看谁呢?看我们这个release吧list,哎它呢,你看它实现了这个叫rhythm access啊RY access啊,它实现了一个结构以后啊,实现了以后呢,哎,我们再回到刚才说的这个位置啊,这个时候呢,你判断它是不是它的实力,那就是了。
04:10
因为实现一个接口了,那既然这是个触,这要是个是不是就直接这个了啊,那点进去啊,这个叫super破了点super。啊,点super呢,这时候又创建了一个这个super list就往这放啊,这个还得往上走是吧?啊猫到这了。嗯,到这了,到这的时候呢,其实我们现在主要找的就是咱们后续的不是想调这个爱的方法吗?调爱的方法你看目前呢。这里边儿你看有没有这个艾特方法,这块没有是吧。哎,主要呢,咱们现在其实你想关注的是什么事呢?就是我们这时候呢,去艾操作的时候,这个艾方法,他为什么不让往里写,那这块有一个这样的at操作,这是I all是吧,这没有A,另有艾只能是往往它的接的负类去找啊负类这块看看有没有A。
05:03
哎,你看这不有个艾特方法吗?它这个艾特方法呢,只要你这个进行这个艾特操作,就抛这样的一个异常,哎,这不就咱们刚才在这看到的这个异常吗。哎,因ID呢,就是呃,你只要往里边去填数据,我就一定让你抛析常,哎,就是咱们现在看到这个点啊,说白了就是只让你读,不让再往里写了,这是咱们说这个扎VA8的一种写法。中的。写法啊,就是如下的这个情况,那这呢是我们针对这个list的操作的,那其实呢,还有相应的这个,比如说set呀,Map呀等等都有,只不只不过呢,咱们之前讲这个集合的时候呢,呃,没给大家去提啊,说创建这种只读集合的事儿,诶这个呢,也就是Java吧里边这个特点,哎,我们把这个呢,CTRL诶C一下啊。哎,把这个呢,我们就给大家拿过来了。嘿。
06:02
哎,这个呢,我就放在这了啊行,嗯,这块呢,我下边写了说适用于不适用于八根之前的版本,这个主要是因为这块呢,咱们那会讲的那个新特性。哎,提到过这种钻石操作服和这个匿名的这个相当于内不类了是吧?呃,匿名实验类了啊哎,这呢是说的这个新特性,那我们主要不关注这个事,看前边这块啊,在这块呢,都体现的创建的叫只读的一个集合,这是咱们原来,哎如果大家呢,在Java吧当中,你想创建只读集合的话呢,诶,你就用这个T1和T2里边这种写法做了啊其实这个只读集合的事呢,我们以前也见过类似的,只是呢,我们没没有明确呢,让大家去测试这个事儿,你看我这样写啊,也是一个只读的,怎么写呢?哎,咱们原来用过risk.as list。哎,我这写个123。哎,345哎这几个数,然后把这几个数呢,我们返回的就是一个list吧,里边呢就是in呗,哎这样造了个list,那这个list的话呢,我们,诶遍历过呀,看大小啊等等,咱们其实之前写的时候呢,我可以避开了往里边去填数据这个事儿,当我们试图往里边比如填一个六的时候,哎,我们执行一下,你看他让不让填。
07:22
你看同样的也报这样的异常,那沿IG呢,就是我们通过这样的方式,你返回的一个集合list,它也是一个只读集合。哎,说此时,哎我们得到的这个哎集合list啊,也是一个只读集合,哎不能往里写数据,主要原因的话呢,你还得看这个as list这个方法了。哎,在这里边你看它你用了一个list,注意这个list。我这一放,下边变色了。这个不是咱们平时用的。是这个相当于这个整个这个结构的一个,是不是内部类啊,静态的内部类啊。
08:02
这是静态的吗?哎,所以内部类呢,对于咱们讲面向对象的时候说,呃,说过哈,咱们自己定义内部类其实比较少,更多的是我们看源码的时候,源码中内部类呢,出现的比较多一些,你就你就知道它是内部的一个类就完了啊。哎,我new一个ear,然后这呢就蹦到这来了,那蹦到这来了,我们看这个结构里边,咱们下边不是调那个爱的方法吗。这不在这调爱的方法吗?对吧?哎,那你现在得到这个list,这不就是这个类型的一个对象吗?你去下边找爱的方法。没有。再整出去了,哎,再整出去了啊没有,那没有的话呢,你就看它的负类呗,负类的就这,哎在这里边啊,我们ctrl o一下,你看一下这个艾,诶这就有点开啊点开呢,这就蹦到这了,这个是艾特它,然后再点一下,这样就抛了个异常。就是没有任何条件的就泡一场,说白了就是不让你往里边去写数据,哎,所以说只要你往里写的话呢,我们这儿呢,就会报一场。
09:08
啊,其实这呢是咱们之前的这种写法,就是这样方式,你造的其实也是一个指读集合啊呃,这个大家也是了解一下,那这呢都是我们说之前的这种写法,那下边呢,我们提一下这个JAVA9当中,咱们呢可以更方便的方式去创建一个制度集合。哎,Avoid啊,我们直接test一个四,那怎么更方便呢?这里边提到一个方法叫做of方法。哎,这个如果大家你看API的时候,哎,我们就会看到里边呢提供了这么多的恶物方法,这是我从这个API里边截图截过来的,哎,这我们就不去看了啊,那你一个list有set有map也有,你去看这三个接口里边都会有这样的一些方法,那这个方法的话呢,你看这个参数还很多哈,就是你想放几个元素都可以啊,咱们这块呢,就举个例子,比如说啊,现在呢,我想造一个子读只读集合,然后哦一下啊,比如说你是一个音字形的。
10:07
哎,我这是五个数,然后在这al enter一下,哎,生成一个哎叫LIST1,这呢就是个只读的,哎只读的话呢,你可以咱们就简单的啊,直接这个输出它了,里边这个数据呢都有。那这样就行,那这个里边的这个LIST1也是一个只读不能修改的,当你试图呢,去做一个爱操作,这个也是不被允许的。那这边也报这样的一个错误啊,不支持这样一种写法,哎,说明呢,我们这就是个只读的,就是以前呢,咱们这个写法,不管你是用上面我这里边写的哪一个,尤其你看这个还挺复杂的啊,哎,我们以后写的话呢,如果你想创建一个尺度集合,直接就O5。啊就可以了啊,这呢是针对这个叫list了,那么看一下这个set呢,点of一样啊,那这个里边比如说整一个这个我们就随便写一些数据了啊。
11:10
哎,这么着行,写完以后呢,然后我们alt enter一下,哎,这就生成了一个set,哎,Set我们也直接呢,就输出一下啊,SET1。它呢也是一个只读的,嗯,这样就出来了啊,哎这个输出这个顺序呢,跟你这块呢,哎,它本身这个顺序看还是不一样的啊哎这个咱们也说过这个问题,那这呢,当你往了一个S1里边,你去在艾一个元素的时候,哎也是不让你去艾特的,上面我这已经注释掉了。你看这儿也是一样啊,在这个63行在这个位置啊,哎,也是表示不能添加,哎不能添加啊,上面呢也是一样。呃,因为呢,是一个制度的。哎,这个呢是创建的list和set,如果你要有需求呢,创建map也OK啊,Map呢也有O方法,你看这都OK啊,呃,Map这块怎么写呢?这个你就直接写k value6逗号k value6啊,一个一个的往里填就行,比如说这个呢,Tom,哎逗号一下啊,比如23,然后再哎Jerry。
12:20
哎,逗号一下这个54。看嘿,整到这个外边啊,里边,然后再来一个啊,比如这个韩梅梅。诶,然后这块呢,来一个A12,诶直接呢,Key value6直接都用逗号隔开就OK了,然后alt enter一下,诶直接呢就会生成这样的一个map,此时这个map的话也是一个只读的。哎,MAP1啊,也是个只读的,言外之意呢,就是当你试图往里边去写的时候,然再去put一个啊,比如说李雷啊,然后呢,34哎,也不让你往里写。
13:03
那这个呢,68号就碰到这了。哎,这叫只读的一个集合的创建啊,注释掉。哎,说不能添加。那这呢也得给大除掉行,这呢是关于他们三个啊嗯,这个map的话呢,因为它稍微特别点,它是有见有值,那除了这种恶物方法之外呢,它还有一种新的方式哈,这个map呢,你看我有个恶恶物呢叫TR。哎,就是你用这个方式行,用这个呢,也可以在里边怎么写呢?map.entry哎,通过这样的一个调用,哎,你可以再接着写,这叫Tom。哎,这个,哎34,哎这是一个了,然后再map.n再写一个jery。哎,在这逗号啊21,哎这样也行,Al enter也能够创建一个。
14:02
哎,Map啊,这个我们叫MAP2行,然后此时呢,你得到这个MAP2呢,它也是一个只读性质的,也不能够往里边去添加,哎,那我们MAP2点你去艾特一下,艾一下。那比如说这个事儿。好在测试。嗯。你看这呢,照样报错74行这个位置,行,那这呢我们就说完了啊,就如果大家以后有需求创建一个集合,这个集合呢是一个只读的,在我们张二九以后,你可以通过这种of的方式去创建,那要是以前的时候呢,怎么做呢?以前这个list呢,还稍微省点事啊,直接呢就at list就可以了,但是你要想创建这种set的。哎,对,或者是map的,哎,那这块呢,你就得调我们collections里边的这个叫an啊,Mod variableable map或者set或者list,哎稍微相对来讲啊,就稍微复杂点,你像这个呢,写了好多行,哎,那现在的话呢,我们一行就搞定,哎这就我们这个新特性的这个方法啊。
我来说两句