00:00
那么接下来的话呢,我们针对于这个JDK当中给我们提供的三个基本的注解,我们自己呢,再来熟悉一下关于注解的一个使用,首先呢,第一个叫呃,Overrede,嗯,这个咱们也相对比较熟悉了啊,这个比如说我这呢声明一个class,嗯,就叫做一个person类,诶P类里边这个咱们简单的去提供它的一些这个属性,好,然后提供啊它的一些这个简单的这个构造器。假设我这就提供一个代餐的了,下边呢,我们去提供一个方法,Public。我靠。人走路啊,然后public avoid。人吃饭行,这是两个这个方法,接着呢,我们去提供他的一个子类class student。Extend咱们的person,那继承这个person以后呢,我们去提供他的这个方法的这个重写啊,现在报错为什么。
01:07
构造期的问题吧,我们在这儿给大家写一个空台构造期,哎,这样就没事了啊。我这写错了,我写错了啊,提供一个空单构造器嘛,这不就好了吗?我们可以在这个子类当中对我们父类中的这个方法呢进行重启,哎,我这呢work一下上面呢,就加了一个叫over read啊这个具体的这个逻辑呢,其实里边这个咱们不是特别关心啊,现在。呃,学生,呃,这个走路啊,简单来写一下,那么我们这个overweight呢,就是个注解,它呢相当于在这个编译过程当中,就在校验一下,你这个方法是不是重写负类,乃至于说呢,是实现在我们接口中的实验接口的话呢,它也是这样,比如说我这呢写一个,诶class的一个,这呢我写个也叫吧。
02:07
你看在这里边,我们写一个我的一个收方法,我们让咱们的这个,呃,这个interface。让咱们这个student呢,去咱们的in。成,接下来呢,我们al enter一下,需要呢去implements这个抽样方法,Show在这个位置呢,也会加上一个overwe的,嗯,那么我这个受这块呢,我写个一,它就立马会报错。这就相当于我们在这个编译的时候呢,就再去校验,要求你这个方法一定是重写复类,或者是实现接口中的这个方法了,哎,如果不是这就报错了。那如果你要是不加他。比如说咱们这个上面这个work啊,这个work呢,你没加没加呢,不意味着这个就不是重启了。这块其实还是提示它相当于是一个重启了是吧,只是呢,你这个时候呢,我不会在编译的时候呢,给你进行校验,你会有这个,呃不是重写的一个可能性,就是大家呢,好比是你以为你这个方法呢,是重写负类的。
03:15
啊,因为我这没有校验,你以为是没有问题,但实际上调的时候呢,有可能会出现一些事,举一个小的例子,比如说咱们这块呢,我person p等于new一个student,哎,然后呢,我通过这P呢去调这个叫work方法,哎,你以为呢,我们在这个子类当中呢,说咱已经重写了这个work了,这个咱们还改回去啊,因为呢,你重写这个work了,但其实这个L呢,一不小心写成是这个一。行程一其实呢,不算是重启了,这时候呢,你再执行发现呢,掉的怎么还是负类中的这个方法呢。啊,这就因为你下边这个方法其实它不是重写,那这个呢,也没有标识了啊,如果呢,你这个位置去加上一个叫over read,它强制的就会在编译的时候跟我们去校验你这个方法是不是重写的,如果不是他就报错了。
04:05
啊,那你这块呢,就可以直接呢去做一个修改啊就OK了,就给我们一个良好的提示,这个overwe的呢,就是使用在方法这块,不可能说在一个类上面加上这个overwe或构造器都不会,只有方法才可以叫重写好,这个关于它呢就过了啊在编译的时候呢,就进行校验,第二个呢叫做deprecated。这个呢,咱们前面也见过,也不陌生,Deeper的话呢,表示它所修饰的结构呢,已经过时了。啊,它呢不光可以用来修饰类,还可以修饰方法,修饰构造器,修饰属性等等都可以deprecated,咱们在CL shift t,像这个昨天讲的这个date当中见的也也比较多了。哎,你看我们一打开这块呢,就是一个de盘,用它呢来修饰这个构造器了,表示我们当前这个构造器呢,已经过时了。
05:00
过时还能不能用呢?还可以用。它这个标识既然呢,你过时了还能用,那你标识它的意义是什么呢?就提示你是吧,提示你呢,说这个结构呢过时了,但是呢,咱们又不能说把这个结构给它删掉。因为我们有可能在这个老的项目当中,是不是就用这个API了,呃,老的项目中我用了,现在呢,你又开发了一个,又提供了一个新的JDK,而且呢,咱们通常都这个建议这个企业呢,去用这种新的这个JDK了。就像Windows一样啊,啊,包括iOS都一样,他们开发的新的系统,他都建议用户呢去更新的,只不过很多用户呢就不更新哈,像苹果比较这个强势一些,就是它有时候默认的就把你这个系统更新呢,就给你打开了,那有网的时候呢,自动就给你更新了,其实是挺恶心的啊呃,他们都建议我们去更新,那从这个呃S公司来讲,他开发了一套新的JDK,他都建议企业级呢去用新的JDK,那如果说人家用新的JDK发现原来的项目根本跑不起来了,那没有人去愿意用这个新的了,那就意味着呢,你用的新的JDK呢,它一定要兼容原来的旧的代码啊,这呢我们称作叫乡下兼容,那就意味着呢,你原来一些老的代码,虽然呢,你在新的JDK当中标识为是过时了,但是呢,也必须要能用。
06:22
所以呢,这个过时是给我们后面做开发的一个提示,以前呢用就用了,后边再用的时候呢,它会提示你过时了,就建议你用新的方案,通常呢,在上面这个这个文档注释当中都会提到说建议你用哪种方案,哎,你就按照他这种建议呢,去使用新的这个方式就可以了。当然了,你要用非要用也也可以啊,也是OK的,是不是咱们昨天用的时候呢,咱用过这个,你有一个data,它呢,其中有一个就是比如2020逗号啊,10:11这个构造器呢,它其实就已经过时了,我们会看到当你在使用这个过时的结构的时候呢,它会中间给你拉一个这个线,提示你它过时了,但是呢,我们去使用呢,不受影响。
07:16
哎,仍然呢是可以出来的啊,就是这样一个情况啊,成这呢,就是我们说的这个过时的这个结构需要大家关注的,就是说提示我们过时了,但是还可以用啊,呃,通常呢,是因为它比较危险,或者呢,我们存在更好的这个选择,像咱们讲这个thread的时候呢,那个suspend stop resume,它呢就相当于是结构危险。容易造成这个思索啊,影响一些这个点啊,所以呢,我们就提示过时了啊,成这呢是关于我们这个叫deprecated啊,那么再下一个呢,叫surprise warming warming,看他这个意思就是抑制警告的意思,所以它的翻译呢,就叫抑制编译器警告。
08:05
抑制编译器警告,那么这个抑制编译器警告,这个咱们在idea当中这块其实你会发现这个代码呢,这块比较干净哈,它没有任何的一些警告信息了。啊,其实呢,这个警告呢,咱们在ecl当中体现可能更明显一些,比如说呢,你看我这块去定义一个int型的一个number,比如说是十,咱们这呢,定义以后呢,在第当中,它会以一个灰色的方式呈现。他这个意思呢,就是在告诉我们,你这个结构啊,你定义了以后没有用,如果呢,我们去输出一下这个number,你看它这个就变成这个深色的了,说明你使用它了。可以理解为呢,就是他以这种灰色的方式,其实给我给我们的一个警告啊,给我们的一个警告,那他这就没有说去有一个呃警告这样一个情况啊,让我们去使用了,在咱们的这个ecl当中,这个呢体现的可能更好一些,那我在这块呢,说一下我呢去新建一个工程。
09:04
不妨呢,我就叫做啊,写成一个小写的吧。的一个来测试了。我这呢去新建一个包。写一个简单的测试。这呢,我写一个没方法。行这呢,比如我们还把刚才这个代码拿过来,我这定义了一个十,这个定义完以后呢,它不会在这说变成一个灰色的这块,一个你看这个叹号,这个叹号呢,其实就是一个井盖了,这个井盖呢,我们把它点开,点开以后呢,下边有说让我们去添加一个叫surprise warming。哎,添加到哪儿,你是加到这个变量上,还是加到这个main方法上。比如说加哪都行,比如我们加到这儿。这个时候呢,这个井号就没有了,因为它给我们加了一个相应的一个注解,这个注解的这个值叫unused,就是你没有用。
10:08
啊,你定义的这个变量没有用啊,那么这个呢,你看我们在咱们的idea当中呢,它就没有过我们这个提示啊,你看我要是把这个打开以后,它这就变成啊,打开它这个去掉以后,这不就是一个灰色的吗?灰色以后呢,我们加上一个它,你看这时候是不是也就变成这个深色了。相当于呢,就是这块没提示啊,那你得自己显示,加上这个呢,就相当于你把这个编译器的这个警告呢,就给抑制住了。啊,编译期,咱们这三个呢,都是在编译期啊检查的啊,嗯,这个呢叫unus的,其实还有一些其他的啊,嗯,比如说咱们后边呢,要讲的这个叫a list,这呢是一个集合中的结构,我这呢相当于造了一个a release的一个对象,首先呢做一个引port的导入,这个写完以后呢,你看它也有井盖,井盖的话呢,我们再点。
11:00
点的话呢,我们去抑制一下,也是把它生命在咱们这个变量的上面啊添加。这呢叫unused确实也没用啊,你光定义了后边有没有去调它的一些方法啊,再接着点还有嗯,还有,然后我们再加一下。就没有了,这个什么意思呢?咱们这个瑞呀,它其实后边有一个这个监控号叫泛型,哎,声明的时候呢,有泛型,但是咱们现在实例化的时候呢,没有用泛刑,它就提示我们这个就是关于泛型这块啊一个警告啊,就是这样一个意思啊,那同样的话呢,你们把这个我们把这个a list啊CTRLC咱们粘到这儿,诶你看这时候呢,首先自动导包了啊,这块呢,仍然是个灰色的,哎,然后呢,上面呢,这不是我们把这个信息呢,也CTRLC拿过来。诶,比如我们先拿这个安us的吧。啊,这块呢,呃,就提示呢,呃,相当于是没有这样的,没有使用的这样的一个情况了,当然呢,我们这块呢,说它还有一个情况,行啊重新粘一下。
12:07
关于这个发型的使用上啊,这么着在咱们idea上呢,这块呢会比较干净一些啊,在eclips这块呢,很多时候我们写代码你会发现有一些警告,嗯,我们更多呢,只关注于这个编译器能不能编译通过,警告呢,很多时候可能就忽略掉了。啊,就忽略掉了啊,如果呢,大家希望这个警告呢,就不出现了,也可以去加上我们这样的一个这个注解啊,叫抑制编译器警告,同时呢,我们也看到它的后边呢,是可以写多个值的啊,这个多个值,这多个值呢,就看作是我们这个结构的一些成员变量。啊,它还有成现变量,那有点像你这是个类呀,哎类呢,我们讲说有成现变量了,包括接口,你也可以说有成员变量,只不过呢,它不是变量,是常量了啊有成员,那么这个surprisewing的话呢,它有这样的两个值,也像它的成员一样,所以说呢,它的这个结构呢,你点开,其实呢,你看一看,也有点像是一个类样啊,一个大括号。
13:11
那么刚才呢,咱们可以往里边写多个值,一个呢叫做unused,一个呢叫reaps,啊那其实呢,就是因为我们这是个数组结构,你可以写多个值。啊,原因造成的,那这呢,就相当于咱们搜出来光ing这样的一个注解,它的一个定义方式啊,就是这个样子的,行,那么通过咱们刚才这两个说明呢,大家去体会一下这里边JDK内置的三个基本的注解。
我来说两句