00:01
喂喂喂,来,咱们开始上课啊,我们这个上午在最后的时候给大家提了一下这个注解是不是。这个注解呢,他又叫做这个注释类型英语单词是annotation啊,呃,那么这块呢,可能会有一个疑问,说是这个注解它到底是什么,是干什么用的,是不是在这里呢?咱们并没有去给大家解释啊,我给大家解释那么。没事啊,咱们今天下午呢,就给他讲明白的,注解在我们开发中到底有什么用啊,咱们到时候结合这个反射机制啊,就是我们之前讲解的这个反射机制,我们一起来看一看好吧,那么第二个就是注解呢,它要知道它是一种引用数据类型啊,它是编译之后生成的文件,是点class文件,那大家可以看到我这里的这个程序啊,比如说叫做annotation是不是,或者是my annotation。那我们可以看一下我们这个代码来在哪呢?在这个C盘下,然后找到这个叫做我们的用户administrator,然后idea project,然后打开,打开之后呢,我们来看一下,看下谁呢,这个out这块production,然后呢,第25章我们打开。
01:13
呃。25张,应该是26张啊。第26章在哪呢?没有输出吗?抽烟。26有了呀。编译通过了。Java文件。是吧?哎,这个我们运行过没有同学们。我们到目前为止没有运行过是吗?没有运行是不是。来再啊。哦,没有运行过。没有一个,随便写个方法。执行一下啊。执行之后呢,这块瞅一眼啊。
02:01
这out这一块打开再打开有了是吧,Come b power node Java这块呢,Adaptation大家看是不是我们写的那个mytation,它这个注解,还有other annoation这两个,它编译生成的这个文件,是不是还是点class文件呀。对吧,哎,还是点class文件各位啊,还是一样的。所以说呢,大家呢,也不用说,哎,感觉这个东西怎么叫注解,是不是我们以前学的那些东西,要么叫累,要么叫接口,这个东西怎么叫注解呢。好,那么这个注解呢,它是一种引用数据类型编译生成class文件,然后再往下呢,就是怎么自定义注解。怎么自定义注解?语法格式是什么?在这里给大家演示一下注解类型,定义很简单,就直接就符号就行了,加一个interface。啊,然后呢,加一个所谓的这个类名对吧,这是一也是一种类型啊,也是一种类型叫MY啊。
03:01
好了,那再往下呢,我们说了一下注解怎么使用,用在什么地方,那注解使用时的一个语法是什么呢?是一个at的符号加一个注解类型名对吧?哎,你看我这是不是在这用的呀,在哪用的呀,你看在这个TEST01里边,你看类上面加上啊。对吧?属性上面加上对不对?构造方法上面加上对吧?哎,构造方法方法上面加上,局部变量前面加上对吧?哎,我们的形式参数列表上加上都可以加啊,注解可以在哪都可以用啊,都可以用,那么再往下呢,我们就看了一下JDK内置的这个注解有哪些在浪包下呢?其实有好几个,一个叫deated已过时的,是不是还有一个overweight,那这个overweight人家今天上午看了一下这个注解啊,它还是非常有用的,大家要注意啊,这个要用上这个呢,我就不再看了啊,没用这个over呢是。呃,修饰方法的各位啊,这个over是修饰方法的,我在这里好像也写了程序吧,来再打开啊,在这个里边是不是用了一个你看。
04:03
All agree用来标注方法,被标注的方法必须是重写负类的方法。如果你这个方法名写错了,或者是返回值类型写错了,总之不是重写复类的方法,那么你必然会出现什么呀,哎,一个编译器的一个错误,所以O瑞的这个注解你点开看看,里边啥也没有,它就是个标记,它这个大框里边什么代码都没有,你看见没有。是吧,啊,你看很有意思啊,很有意思。那么这个注解呢,它是给编译器看的,编译器看到这个注解之后呢,哎,编译器就怎么着啊,哎,去检查这个方法是不是重写复类的方法。如果是的话,哎怎么着,对不对?哎如果不是的话,怎么着,它会有一些哎编译方面的一些一些作用啊一些作用,那有同学就问了说老师啊,这个overwe为啥不能往类上写呢?我在类上面写不行吗?
05:00
嗯,我在这写不行吗?不行,那这是怎么回事呢?我们可以看一下这个注解,这个注解上有一个注解说叫target,看见没有。这个注解用来修饰这个注解。说你这个注解只能出现在方法上,这个单词应该认识吗?所以说你看这也是一个注解,对吧,这个注解是用来修饰这个注解的。那么修饰这个注解可以出现在哪呢?可以出现方法。哎,你如果加上这个,你看是不是我们这个注解就只能出现在方法上。在我们这里,假如说有一个属性。那么我们能不能用这个注解呢?来,我们写上啊,叫做overweight。
06:03
报错了。是不是你鼠标停到这儿看看这报什么错。说overweight不能够应用在哪呀,这个field上。是不是不能在这出现over read也不能出现在类上,你看他说over read不能应用在一个class。你看不不能应用在某个类型上,你看type不能不行,Over不行啊。那over为什么可以用在方法上呢?这是因为overweight当中有一个什么呀?这个注解上面有个注解,这个注解用来修饰这个注解的注解啊,如果一个注解用来修饰注解的话,这个注解被称为圆注解,各位。圆柱啊圆柱。了解一下,了解一下。就是注解,注解的注解叫做圆柱解。哎呀,这有点绕注解,这个注解的这个注解。就target这个注解啊。
07:01
被称为圆柱。圆注解各位啊,就我在这里现在讲的是关于JDK内置的几个注解。其中Java点浪包下的。对吧,有。有这么三个注解,其中这两个注解要掌握一下,这个就不用看了,现在不是说这个注解overweight吗,是不是?啊来,我在这给大家解释一下啊,这个啊。圆柱?什么是圆柱?什么是圆柱结?用来标注注解的。用来标注注解类型的注解。称为圆柱节。那么常见的圆柱解有哪些呢?常见的圆柱解有哪些?
08:07
用来标注注解类型的注解称为圆注解。常见的圆注解有哪些呢?Target。啊和这个retention。这两个注解。这个他注解,所以说一共咱们学几个,学五个就行了啊啊学四个就行了,各位一个两个三个四个啊,一共学了四个。那么target注解,我们可以看看关于target注解。这是一个圆注解啊,用来标注什么呀,用来标注注解类型的注解。啊。这个注解用来指定。被标注的注解可以出现在哪?
09:01
明白吧,这个注解用来干什么呀,标注或者这个他盖的注解。这个他的注就用来标注。被标注的注解可以出现在哪?被标注的注解?可以出现在哪些位置上?明白吧,这个的这个注解啊,它是个圆注解,用来标注注解类型的注解,这个注解用来标注被标注的注解可以出现在哪些位置上。啊,可以出现在哪些位置上。你看我从这呢,把这个拿过来。这个是什么意思?表示被标注的注解只能出现在方法上,表示啊,被标注的注解只能出现在什么呀,方法上,他不是说他get。
10:02
可以出现在。方法上各位啊,是你修饰的下面的这个注解,它只能出现在方法上。那么这个叫做圆注解,这个呢,其实就是被标注的注解,那么这个圆柱解什么叫圆柱解,就是用来标注。注释注解类类型的一个注解叫做圆注解,而这个target盖的圆注解用来指定我们这个注解可以出现在哪个位置上啊,那这个地方叫method就证明什么呀,哎,它可以出现在一个方法上啊,出现在一个方法上,所以呢,大家会看到这里呢,哎,出现在一个属性上啊,出现在一个类上面呢,就不行了。是不是哎出现这上面就不行了,那么另外呢,其实也可以了解一下这个注解各位。这个注解呢,其实用来标注这个注解的,所以它也是一个圆注解,Re,也是个圆注解,这个注解用来标注这个注解,它最终保存在什么位置上?
11:05
啊,保存在什么位置上。那么。那么这个注解如果后面是S,就表示这个注解只停留在Java源文件当中。是原本文件文件啊,我可以给大家讲一讲这个,讲这个啊,我们看一下。我来写一下啊。关于。关于这个retention注解。这个啊,这个注解,这是一个圆柱解。啊,用来标注注解类型的注解。明白吧,哎,这个。这叫他的注解。这个retention吧,来把这个过来啊,这个retention这个注解用来标注。被标注的注解。
12:01
最终保存到哪?啊,最终保存到哪里。那这是什么意思呢?表示表示该注解只被保留在什么呀?哎,Java语言文件中,哎,它还有别的写法,各位。当然这个也有别的写法,各位啊,不一定是方法,还有别的。来,他还有什么写法呢?他还有一个写法是。注意听一下啊。Class和runtime。来,这是个枚举,各位啊,你先不用管这枚举啥的啊,还有一种写法叫做什么呀。Runtime,注意听啊,注意听各位啊,这点东西要听不明白吗?是不是,哎,Runtime拿过来啊,那么这个表示该注解被保留到class文件当中啊,表示该注解被保留在。
13:11
被保留在class文件中。啊,那这个runtime呢。表示该注解被保存在class文件中,并且可以被反射机制所读取。明白吧,就这个位置需要指定一个保持性策略,如果你写个source,就表示它这个注解只保存在我们Java源文件中,写个class表示保存在class文件中,写一个runtime表示保存在class文件中,并且可以被反射机制所读取到。那你看一看这个over瑞的注解吧,你再瞅仔细瞅一眼,这个over的注解只能出现在方法上,这个over的注解只被保留在Java原文件当中,这就是我刚才给大家讲的O瑞的这个注解,它只在这个Java原文件里边存在,你明白吧,这个anno test02这个程序只要一编译。
14:06
编译之后呢,它会生成什么呀?T02.class在这个class文件里边,它是没有这个注解的,这块是没有东西的,听明白了吧,就这个是没有的。这个O瑞的这个注解,它只被保留在一个Java的原文件当中,那为什么这个注解会保存在Java源文件,它编译生成的class文件里边,为什么没有它呢?因为这个上面有个保持策略。保持性,就最终你的这个over的注解保存在哪,保存在Java源文件当中。啊,理解这意思吧,所以这个是圆柱解,各位啊,这个圆柱解是用来设置这个注解出现的位置啊,这个圆柱解是用来设置这个注解。它的什么,它最终保存的位置。最终保存的位置。它可以出现的方法上,它最终只保存在Java源文件中,Class文件编译,它都没有这个东西的。
15:01
对,这个over它就在原文件里边存在合理啊,因为这个over它只是给谁看啊,Over这个注解只是给编译器看的,编译器看了之后,哎,这个over就没有存在的价值了,所以呢,我们编译生成的这个class文件,就是编译生成的class文件里面是没有这个代码的。是没有这个代码的啊,大家了解一下啊,好,这是这个各位啊,还是比较有意思,也是比较重要的啊,实际上我们一共学的就这几个吧,一二,然后三和四啊。
我来说两句