00:00
再下一个叫注解,那首先关于注解的理解,那注解的理解这呢,我们写了这样的几个点,CTRLC,那其实在咱们这个Java技术当中,这个注解呢,其实不算是一个难点了,诶这个大家听完课以后呢,应该也能知道,呃这个咱们后边呢,在讲到这个框架或者真正开发当中呢,这个朱解用的是比较多的啊,朱姐用的比较多的,诶我这呢,这边还写了在我们课件当中写了一句话啊,就是实际上呢,咱们后边讲的这个框架啊,一说呢是挺高大上的,呃开发当中呢,用的呢,肯定都是框架了,不会我们自己去写这个具体的一些组件和最底层的一些这个呃代码了,像咱们后边讲完数据库以后呢,会讲一个JDBC,那JDBC呢,是咱们自己呢去调这个API,看看怎么用Java代码呢,去操作数据库,那真正在开发当中啊,基本上都不会让你自己去写这个JDBC的。那我们直接呢就调这个,比如说my be啊,这个have ne啊,哎,我们直接呢去来操作数据库啊,用这个框架去实现啊,那么框架呢,其实就可以理解成对咱们这个基本的一些组件和一些API的封装啊,大家呢直接呢使用框架开发效率呢就更高,而且呢可以应对更复杂的一些实际开发场景,你要自己去写呢,那还是需要花费很多时间的啊,那框架呢,其实就可以看作是,哎我们昨天写的啊,就是先提到一个叫注解,很多时候呢,我们就不用把一些配置信息呢,写在插包文件等等这样的一些配置文件里了,直接呢我们就用注解方式来做,同时呢,我们用这个反射机制呢,去读取这些注解啊,然后完成相关的一些这个操作,这个过程当中呢,涉及到相关的这个设计模式的一些使用啊,这呢其实就可以看成是这个整体,就构成了我们这个框架啊,就构成了框架,那么基本上大家开发中都是用这些现成的成熟的框架,但不排除。
01:54
那如果你去一些这个大的公司,包括呢,像阿里等等这样一些公司,他们也会有自己的一些框架,那尤其像这些年阿里也好,腾讯也好,他们也尤其是这个阿里哈,这个这个持续性的也出很多的书啊,讲他们这个公司中内部的一些技术,包括呢,这个腾阿里呢,也会推出一些开源的框架,那对外推出之前呢,这些框架都是内部在用啊,那这个呢,就意味着以后大家如果技术呢,也都慢慢的往上涨,也会呢参与到公司中一些框架的开发,那你就不简单的是使用框架了,而是呢,要开发框架啊,这也是会接触到的啊,那你要是开发框架呢,你就得接触到这个框架的底层源码,你去开发嘛,是吧,哎,接触到这个源码了,或者说呢,你这个,呃,不去开发框架,你想对这个框架有更深入的了解,那你要接触它的源码,你接触源码,那就接触到咱们讲的这些比较基本的一些内容了,比如说这个卖basic也好,Haber那也好,底层呢一看发现,哎哟,原来里边还是用的GDBC了啊,那这块我们讲课的时候也会讲一讲GDBC啊,让你更接地气是吧。
02:54
哎,不是说光会用框架啊,你也得知道框架里边是怎么做的啊,行,那么这是我们的一个理解啊,关于注解的一个理解,你知道后边咱们开发中呢,会常用注解,哎,就行,下一个注解的一个使用实例,为了让大家更好的去理解这个注解呢,我这块呢,在PPT当中写了关于他的三个层面的一个理解,就是一些使用场景。
03:19
第一个呢,就是关于生成相关这个文档啊,这个其实也不用多说了啊,咱们昨天也都讲过了,就是这样的一个方式,咱们写这个文档注释里边呢,都会有这样的一些这个注解信息,这是第一个层面的,第二呢就是咱们呃,在Java基础里边涉及到了三个常见的一些这个注解,那就是这三个,然后第三个呢,就是我们提到后边呢,讲web讲框架的时候,哎,我们原来在配置文件中写的这个数据呢,就都通过这个注解呢来做了。哎,诶这个啊,还有这块啊,关于这个这个事物这块啊,他这个操作也是用这个注解来做了,其实呢,该做的事儿一个没少,只是说呢,这些事呢,就不用你去做了,提前呢都给你写好了,通过反射呢,我直接去读你这个注解信息,你里边要做的事儿跟我们去读这个配置文件要做的事其实一样啊,就是从格式上来讲更简洁了,大家的开发效率呢就更高了啊是这样啊一个意思,其实呢,也很好理解,你就像现在这个咱们这个人类社会都发展了,这个都都2000多年了哈,呃,你你再出生一个人。
04:24
就比如或者换句话说,比如说这个现在大家还在这个唐朝吧,唐朝你要生了一个小孩儿,哎,你教他这个唐朝的一些这个知识水平是吧,知识就只能到唐朝这个时候,那你到现在的话呢,这这这几百年的时间,大家知道这个人类社会这个知识呢,大爆炸是吧,这一百两一一两百年的这个知识呢,这个发展的这个叫什么呀,信息量那比前面呢,可能这个几千呃一两千年还要多,就知识大爆炸嘛,这个刘慈欣在这个三体里边,这不也提到这个问题是吧,这一个文明的话呢,你看他现在很落后,但是你不能拿这个线性的观点,你去看待这个这个文明啊,他之前可能发展了1000年,他现在还是拿石头在那,在那那个生火呢,是吧?啊,你你再给他1000年,你觉得他顶多会用个打火机,结果不一定啊,他到那个时候可能他比这个现在的文明要高得多得多,就文明的发展呢,它有的时候甚至是这种指数级的啊,突然出现一个爆炸的一个节点呢,然后它几十年,它就可以达到原来几千年的这种文明。
05:24
的这个迭代的速度啊,所以当时这个三体也特别怕地球,他们过来的时候呢,地球已经文明极度高度发达了,所以发了几个那个水滴啊什么的是吧,去扰乱地球这个磁场是吧?啊叫什么子质质子啊啊对,就扰乱地球这个科学实验嘛,就是这个科幻里边的一些说法是吧,嗯,对诶怎么说到那儿的,嗯嗯,就是说什么呢?就是咱们没有必要呢,就是呃,像现在一个小孩一出生啊,一出生先叫他甲骨文,说你得从中国这个这5000年那时候开始学是吧,他都学到老了,他才学到唐朝是吧,这累死了啊,那永远不能跟上这个时代的步伐了,那以后出生这个孩子,你会发现这个他要学的东西太多了,所以呢,我们能做的事就封装,封装,封装是吧,那封装呢到你呢,就是你不需要懂那么多了,一上来就直接呢,就用现在的一些东西,那以前一些底层呢就不用管了,其实开发呢也是这样,哎,我们开发越开发这个呢,就越希望。
06:24
呢,这个便捷一些,在原有的基础上呢又迭代,那对于一个成员来讲,大家一入手也不用说非得又从最初的那个一点点去构建啊,这个呢就都给你封装起来,你就诶直接用就行,那基础好的人呢,诶关注一下底层是怎么做的,属于这种啊行,嗯这呢是咱们说的这个三种这个视例啊,就关于注解这块,嗯,下面呢,就提到一个,咱们毕竟讲注解,那就看看除了呢给我们提供的这样的一些基本注解之外呢,我们如何去自定义注解,呃这呢,咱们就写了一个my on notation,以它为例,那这个myation其实写的话呢,大家也用不着说自己吭哧吭哧的就去死记硬背哈,说我使用这个呃圈at interface来定义,当然这作为一个基本点也应该清楚啊,就是你别看到以后,哎哟,这是什么东西,这不能说不认识啊,得认识,你要写这个注解的话呢,哎,其实很多时候大家都可以降低你的这个记忆量啊,如何去自定义注解,你就参照一下我们的这个叫。
07:24
做出来多,就像大家呢去写,咱们当时讲这个说自定义异常一样,怎么自定义异常,你就看看他怎么写的呗,啊,你看他run time exception怎么写的,你看他的exception他怎么写的,他怎么写,咱们就仿照着他去写啊,这个作为咱们中国人这个事呢,应该很擅长是吧?啊这个以前的话呢,咱们没有特别强的这种创造力,嗯,加上咱们这个文化文文明水平呢,确实相较于那个西方来讲稍微差一点,那你要想快速的赶超它呢,你不能自已再去研究这些理论了啊,那能拿过来用的就直接来用啊,所以我们就把它那个实际东西拿过来拆一下,一看啊清楚了,清楚我就接着我造是吧,就这种啊。
08:06
成,其实说实话,这个中国人这个还是挺聪明的啊,一方面聪明,另外一方面还勤奋,所以呢,现在这个这不都讲说中国的改革开放,这是几十年40年是吧,说这个创造了人类历史上的奇迹,其实想想也确实是啊,几千年这个人类历史当中,呃,有这种各种朝代的更迭,以前呢,从某一个节点以前去划分,可能还像是一种野蛮时代的啊,就是这个拼呀杀呀这种啊,从这个文明时代起,这个迭代的速度就越来越快了,中国呢,其实确实走到一走了一条这个非常正确的一条道路上啊,这个其实非非常的重要啊,当然现在其实也有很多的危机啊,你这个这个国际大环境啊,现在今年不又说这个是非常艰难的一年是吧?啊,说一九年呢,呃,从之前的十年来看,可能是最糟糕的一年啊,那这个乐观点来看呢,一九年可能是未来十年当中最好的一年,哎,对啊,就是现在大家都这么去讲啊,那越是这个。
09:07
这时候呢,大家其实越应该沉下心来呢,就当这个外部大环境越不好的时候呢,应该沉下心来去学习啊,积累这个技术,当这个环有变化的时候呢,就是一跃而起是吧,嗯,成,然后下一个呢,这个我们这个这个说的是啥呀,权益修饰符在注解中的使用。嗯。自定义注解啊,你说是我们这个叫my not my notation,它这块前边是吧,你说这个value啊,Public啊,你说这个权限用不用是public是这意思吧,这个你要删的话呢,是不是也可以啊,这就跟类一样了,就是这个注解呢,它这个结构呢,我们定义就像个类或者个接口一样,你希望它这个在整个功能下都被看到,那你就加上这个public,你要说呢,这个你只在当前包里边被看到,你就别加,通常呢,咱们一般都会把这个权限写的大一些啊,那这个这个就是这样个事情,这呢是咱们自定义的这个叫my an notation,哎,上面这个圆柱解呢,也顺便呢,都给它加上,那直接呢就都拿过来了,这呢就是自定义的一个注解,实际上呢,比较简单啊,就是声明一下,这个interface写一个注解名,后边呢,加了个这个结构,这个结构你得知道这不是方法啊,你回头到公司里边跟人家旁边的同事说。
10:33
诶,这个注解里边呢,我用了一个方法,这这就当然呢,他可能也不懂是吧,嗯,我们说完以后他说啊对对是吧,就很多时候你在工作里你会发现俩人说的其实都是错的,但俩人互相谈的还挺嗨啊啊这种嗯这呢是一个属性啊嗯,这个我们也有一些简单的说明,那关于自定义这块啊,把这个呢拿过来CTRLC。
11:01
诶这么着,呃,说明的话呢,这个CTRLX这个我放到这吧,这样子,诶这1234是关于我们这个定义的时候的一些说明,嗯,然后下边这个呢,需要大家去关注的,呃,上面这个步骤啊呃,如果呢,这个注解成员在使用注解的,呃这个如果注解成员这个我粘过来,是不是又有成员这个有字,这个大家呢,看这个文档的时候呢,小心一点,有的这个缺字了啊,还好他不是把那个酶给去了,那就麻烦了啊呃,如果注解呢,有成员在使用注解的时候呢,需要指明这个成员的这个值啊,这是这个事儿,就是你定义这个VALUE6,你这个值到底是多少,如果你要有默认质量,那就可以不指定啊,那就相当于使用默认值,就像咱们说那个变量一样,这个属性咱们其实呢,在用的时候呢,也一定得有值,哎,这个只不过呢,对于属性来讲,它有默认值,哎,你要这个直接用,没有负值那就用。
12:02
默认值,那你也可以给它附个值,它就用你显示负的这个值,自定义的注解,必须配上相应的这个信息处理流程才有意义,我们只是在比如说咱们的这个哎,Person上面加了一个注解,然后后边也没有任何位置呢,或者通过反射去吊它,那你这个加跟没加也没什么区别,没啥意思啊,你还不如写一个这个单行注释呢,说说两句话呢啊,那我们写它的目的呢,是通过反射呢,可以去调到它,然后呢,看看你到底是想对这个类呢,做一些什么样的操作,哎,这呢,我们必须配上这个反射的这个,这个这个代码逻辑才有意义啊。而你要这样写,这肯定不行,这种呢,这个我们通过反射是绝对获取不到的啊,它这个不会去保留在这个运行时行,然后通常呢,我们就会指定这样两个圆柱节,呃,代码的一个具体的举例,这个我给写到这儿了,其实啊。哎,CTRLX这个我放到这吧,然后再下边呢,提到这个圆柱解,这个咱们也考虑个问题了,对现有的注解进行解释说明的,具体呢,我们讲到了这样的四个圆柱解。
13:08
CTRLC。这样四个圆柱解,那这个概念呢,上面已经写了,我就删掉了,那四个圆柱解,这里边呢,大家稍微关注的就是前面两个,咱们考试呢,也考到了,不多说。对这个target,诶target咱们复习的时候是不是也没说它忘了说了啊,这个target的话呢,就是指明你被修饰的notation,你能够这个用来修饰哪些程序元素啊,修饰类啊,接口啊,修饰这个成员变量啊,修饰方法啊,构造器啊等等,哎,这是这个特啊。出现的频率较低的这两个,哎,行,这就过了啊,这个咱们也稍微举个例子了,然后呢,这个叫圆柱体,顺带呢,我们类比一个概念,叫做原数据,哎,比如说string name Tom,哎这个咱们上课也说过了,这是最核心的内容,它俩呢,一定程度上都是用来解释说明,修饰我们这个Tom数据的,那这两个都可以看成是它的原数据,后边呢,咱们会讲到数据库,这个叫结果集的原数据,那就是用来对结果集进行解释说明的数据了,啊成这个呢,就大家清楚这个事就行,后边第五个事儿呢,其实比较重要,其实是比较重要的就是咱们这个讲这个注解,或者用这个注解,目的呢,就是我们后边呢,得能够诶对你进行操作了,这个操作呢,就是通过反射来做的,哎,通过反射啊来进行调用。
14:37
哎,先是得获取啊,获取完以后呢,哎,再进行一个调用,哎如何获取注解信息,那么反射呢,咱们还没有讲,所以这块呢,大家先知道这个事儿就可以了,后边讲反射的时候我们再说,那么通过反射来进行获取调用的前提是什么呢?对要求呢,词注解的,嗯,它的这个叫reation是吧?嗯,它这个圆注解。
15:07
呃,圆柱解他嗯中声明的这个生命周期啊,状态为啊,这是一个run time的。OK,这是这样的一个事情。行,这就过了啊嗯,到那时候呢,我们会说这个事儿,然后下来呢,我们提到JDK8当中注解的新特性这块呢,大家其实还不用当中特别重要的内容来看了,就是呃,新的这个知识点吧,毕竟咱们得稍微讲一下,这里给八当中这个新特性这块呢,就要可重复注解和这个类型注解,咱们上课也讲了这个,大家呢下来呢,看一看这个代码也可以,有时间的话呢,相当于自己去配一下啊,自己跑一下看看,哎就可以了啊,这个呢,不用当成是特别这个重要的这个点来去这个这个解决了啊。
16:02
成这呢是咱们说的这个叫注解的使用。
我来说两句