00:00
好了,那咱们接下来继续看吧,看这个deprecated好不好,这过时这个东西行吧,来一块看一下啊。来,我这个关掉了啊,很好用,很简单啊,在这呢,我们去新建一个class,我们这个class叫annotation test03。然后呢,在这个程序当中呢,我们用一下这个deprecated啊depcated来,比如现在在这有个方法,Public static void do some这个方法,这个方法你输出输出什么呢?输出这个嗯,Do something啊,Do something。好了,那么这块呢,有一个方法,这个方法呢叫做do。Do啊,然后呢,输出do。好了,那么接下来我来这个方法上,我加一个deeper Kitty这个注解。我加上这个注解之后呢,接下来我用我这个类去调一下这个方法,我们来看一下do some,大家看这个方法上。
01:04
你在调的时候,调这个do some的时候,大家看上面是不是有一个横线呀。对吧,哎,你在这个类上面加一个这个类,假如说已过时了de。这个泪过时了。嗯,这个方法过时就不用。就不用加了是吧,不用加了啊。啊,假如这个这是这个类已过时啊。表示这个类已过时表示。这个已过时啊。就你想一想,你在实际的开发中,有没有可能会存在这种情况,什么情况呢,就是说。你在一年前写了一个程序,一年之后你对这个程序怎么着进行了升级?对吧,以前的那个方法你觉得不好是吧,你为了把这个消息传达给全球所有的Java软件工程师,你在新新升级的那个版本当中,你是不是会标记上某一个方法已经过时啊。
02:05
对吧,其实这个标上去与过时,实际上是为了通知别的程序员,告诉别的程序员我们这个是已过时了,你就别用了。啊。别用了,来,假如这个方法我们别静态了,删掉吧,啊删掉啊删掉来这个也删掉它,我们要调一下这个方法啊,我们得你对象啊。这个对吧,哎,拗一个他出来。Do some?这没什么反应是吧。没反应,再标一个depar的过时,看看有没有反应,应该出现一个横线才对啊,但没出现,看这有没有有。有最后在这这上面按说应该也出现啊,但是没出现。Some。是吧,诶来class t啊,我这加一个这个main方法,我在这块我用一下这个代码,看看会不会有啊。
03:00
有了。是吧,在本类当中写这个main方法的话,这里边儿它不会给你加这个横线,是不是在外边给你加上去了。是吧,假如这是个静态的方法,我也给它标上去以过时啊。标准已过时的话,我应该是采用类名去调吧。类是这个类吧。对吧,点什么呀。叫做do other do other方法的话加一个好,大家看这里是不是也出现这个问题啊。对吧,哎,也出现这个问题啊,就是说你为了为了把你的这个方法已过时了,你为了把这个消息传达给别人,你需要在这个方法加上这么一个东西。啊,就DEP标标记的元素已过时,就这个意思。这个注解标注的元素,标注的元素已过时。啊呃,这个注解主要。
04:04
是向什么呀,程序员向其他程序员传达一个信息,告知已过时啊,有更好的什么解决方案存在啊,有更好的解决方案存在啊,就这个意思,就这一个注解。也可能会用到,因为在软件升级的过程当中,有一些方法你不断升级,不断你发现以前这个方法就不好了,有更好的方式的话,你为了把这个消息告诉给全球的Java软件工程师,那么你可以在你这些方法上加上已过时这个注解之后,将来我们程序员在调你这个方法的时候,出现一个在这个idea当中或者eclipse当中出现一个什么呀减号。对吧,哎,出现一个减号,那并且这个运行。它应该都有提示吧,看一下啊,看看运行有没有提示。有提示的。呃,这个消息你看这个消息这出现了警告是吧,在工具当中他也警告了,警告什么呀D,呃。
05:05
你看说这个do some和do other方法已过时吧?对吧?哎,Do some和DO2的方法已过时。啊,你要是没有这个注解。它就不会显示已过时啊,很简单,就这么用就行啊,就这么用就行,这deer标注的元素啊,它已过时就这意思。啊,这两个都很好用。你以后可以选择用一下,比如说你写了一个类。或者你写了一个方法。然后呢,哎,你这个方法怎么着啊。你想表达已过时,加上这个注解就行了,你不加它表示没有过时,你加上它表示已过时了。啊,只是一个提示提醒作用。然后之前讲的这个over read呢,这个也是非常非常重要啊。建议在重写的方法上加上这个注解,加上这个注解之后呢,编译器呢会做检查。
06:04
啊,我们看了一下这个原代码,你看里边什么也没写对吧?哎,上面有两个圆注解,我们呢,可以看一看谁啊,我们这个deprec的这个注解,上面的圆注解长什么样。好,我们来分析一下各位,大家看这里。诶,看一下这个注解上面有个documented,这个不用看了啊,这个不用看了,这这不重要啊,不用看了,这个圆柱解就忽略了就行了。那么大家看这个地方有个retention,是不是I retention保持性吗?哎,说这个注解它保存在哪呀?Class文件中,并且我们这个注解可以被反射机制所读取。对吧,可以被程序运行阶段,运行阶段runtime运行阶段读取到。大家看我们这个程序是不是在运行的时候,是不是这个地方有个消息叫message。找一个。
07:06
嗯,按说应该有信息啊。再走一眼。啊。刚才还有来着。买C杯了。这个不是这个这个。你不是。运行T一点慢。没了消息呢。Deplic,没删吧?刚才还有个提示消息啊,说这个do some方法和do other方法是怎么已过时了是不是?已过时了,有提醒消息,我们来看一下我们这个class.class for name。Java。然后这块呢,我们加一个开。嗯。
08:00
加叉开,然后呢,我们调用一下c.new instance这个方法,这个方法就已经过时了,你看。是吧?啊,那这个方法为什么会已过时呢?点过去大家看这里是不是写着deep kit后边还加了一个JDK的版本是吧,咱们先不用管这个啊,就是说他标记的这个东西已过时。那现在我们在这运行一下,看这这个会不会出问题啊,来运行一下。我记得应该是有提醒消息,你看message出来了,Message啊,这个message出现了是吧,说你第WARNING32行。第32行这边是吧,哎,New instance已过时,那么这个消息是怎么检测出来的呢?显然,我们这个注解是一定被保存在什么呀,我们的自解码文件当中的,并且可以被我们的程序所读到。对吧。如果说你这个deer的这个注解只是被保留在这个注解啊,只是被保留在我们的原文件当中,相当于这个overrede只保留在原文件里边的话,这个是。
09:11
哎,读不到的,读不到的啊,我们现在之所以运行的时候,这提示一个信息,那证明我们运行跟Java源文件就没关系了呀,它运行最起码是class文件,它检测到这个class文件里边有这个东西啊。对吧,包括这个new instance方法是不是也是检测到这个class文件里面有这个。注解对吧,而且这个注解是不是还被被还被读到了吗?哎,还被读到了,那为什么这个注解被保存在class文件中,并且可以被读到呢?哎,我们看一下源代码就知道了,这个depric的这个注解上面大家看。是不是有一个保持性策略,指定的是class文件,并且可以被可以被运行时或者反射机制所读取吧?好,我们再看这个deer为什么可以出现在这么多位置上,没问题,大家看啊。
10:01
我们既可以让它在泪上出现。我们也可以让他在方法上出现,我们还可以让他在我们的成员变量上面出现,或者是实例变量出现。Deprecated。都可以。它可以出现在这么多位置上,是因为我们deper的这个以过时,这个注解上面有个target,你看这个target读一下value是constructor,构造方法上可以出现,Field字段上可以出现,局部变量可以出现,方法上可出现,包上可以出现,模块上可以出现,参数上可以出现,以及类上都可以出现,你看。是不是?拿过来。这个就表示该注解可以出现在哪呀,构造方法上啊。对吧,字段上局部变量上对不对,方法上啊等等等等类上等等啊。
11:08
不再写了这样一个注解。啊,它是个圆柱解,圆柱解啊。
我来说两句