ToB企服应用市场:ToB评测及商务社交产业平台

标题: day30-注解 [打印本页]

作者: 涛声依旧在    时间: 2022-9-16 17:24
标题: day30-注解
Java注解

1.注解的理解

基本的Annotation介绍:
使用Annotation时要在其前面添加@符号,并把该Annotation当成一个修饰符使用。用于修饰它支持的程序元素
2.@Override注解

例子:
  1. package li.annotation;
  2. public class Override_ {
  3.     public static void main(String[] args) {
  4.     }
  5. }
  6. class Father{//父类
  7.     public void fly(){
  8.         System.out.println("Father fly ...");
  9.     }
  10. }
  11. class Son extends Father{//子类
  12.     //@Override 放在fly方法上,表示子类的fly方法重写了父类的fly方法
  13.     //即使这里没有写@Override,其实还是重写了父类方法
  14.     //但是如果写了@Override注解,编译器就会检查该方法是否整的重写了父类的方法。
  15.     //如果的确重写了就编译通过,如果没有构成重写则编译错误
  16.     //它的意义就在于语法的校验
  17.     @Override
  18.     public void fly(){
  19.         System.out.println("Son fly ...");
  20.     }
  21. }
复制代码
@Override使用说明:
点击@Override进去可以看到Override的定义:
补充说明:@interface的说明
@interface不是接口,是注解类 ,在JDK1.5之后加入的
3.@Deprecated注解

Deprecated用于表示某个程序元素(类、方法等)已经过时
例子:
  1. package li.annotation;
  2. public class Deprecated_ {
  3.     public static void main(String[] args) {
  4.         AAA a = new AAA();
  5.         a.hi();
  6.         System.out.println(a.n1);
  7.     }
  8. }
  9. // @Deprecated 修饰某个元素,表示该元素已经过时
  10. // 即 不再推荐使用,但是仍然可以使用
  11. @Deprecated
  12. class AAA{
  13.     @Deprecated
  14.     public int n1 = 10;
  15.    
  16.     @Deprecated
  17.     public void hi(){
  18.     }
  19. }
复制代码
查看@Deprecated注解类的源码:
@Deprecated使用说明:
3.@SuppressWarnings注解

@SuppressWarnings属性介绍及属性说明:(部分)
属性属性说明all抑制所有警告boxing抑制装箱、拆箱操作时候的警告cast抑制映射相关的警告dep-ann抑制启用注释的警告deprecation抑制过期方法警告fallthrough抑制确在switch中缺失breaks的警告finally抑制finally模块没有返回的警告hiding抑制与隐藏变数的区域变数相关的警告incomplete-switch忽略没有完整的switch语句nls忽略非nls格式的字符null忽略对null的操作rawtypes忽略没有指定泛型的警告(传参时没有指定泛型的警告错误)restriction抑制使用不建议或禁止参照相关的警告serial抑制与实现序列化的类遗漏serialVersionUID的的警告static-access抑制不正确的静态访问方式警告synthetic-access抑制子类没有按最优方法访问内部类的警告unchecked抑制没有进行类型检查操作的警告unqualified-field-access抑制没有权限访问的域的警告unused抑制没被使用过的代码的警告
例子:
  1. package li.annotation;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. // 1.当我们不希望看到警告时,可以使用@SuppressWarnings注解来抑制警告信息
  5. // 2.在{""}中,可以写入你希望抑制(不显示)的警告信息
  6. // 3.@SuppressWarnings的作用范围和你放置的位置有关
  7. // 比如 @SuppressWarnings放置在main方法,那么抑制警告的范围就是main方法
  8. public class SuppressWarnings_ {
  9.     @SuppressWarnings({"all"})
  10.     public static void main(String[] args) {
  11.         List list = new ArrayList();
  12.         list.add("jack");
  13.         list.add("mary");
  14.         list.add("Bob");
  15.         System.out.println(list);//[jack, mary, Bob]
  16.     }
  17. }
复制代码
查看@SuppressWarnings源码:
4.元注解

元注解的基本介绍:
JDK的元Annotation用于修饰其他Annotation
元注解的种类:
4.1@Retention注解

说明:
只能用于修饰一个Annotation定义,用于指定该Annotation可以保留多长时间,@Rentention包含一个RetentionPolicy类型的成员变量,使用@Rentention时必须为该value成员变量指定值:
​        @Rentention的三种值:

4.2@Target注解

基本说明:
用于修饰Annotation定义,用于指定 被修饰的Annotation可以用于修饰 哪些程序元素
@Target也包含一个名为value的成员变量
  1. @Documented
  2. @Retention(RetentionPolicy.RUNTIME)//它的作用范围是RUNTIME
  3. @Target(ElementType.ANNOTATION_TYPE)//这里的ANNOTATION_TYPE 说明@Target只能修饰注解
  4. public @interface Target {//注释类
  5.     /**
  6.      * Returns an array of the kinds of elements an annotation type
  7.      * can be applied to.
  8.      * @return an array of the kinds of elements an annotation type
  9.      * can be applied to
  10.      */
  11.     ElementType[] value();
  12. }
复制代码
4.3@Documented注解

基本说明:
@Documented:用于指定被该元Annotation修饰的Annotation类将被 javadoc工具提取生成文档,即在生成文档时,可以看到该注解。
PS:定义为@Documented的注解必须设置Retention值为RUNTIME
4.4@Inherited注解

被它修饰的Annotation将具有继承性,如果某个类使用了被@Inherited修饰的Annotation,则其子类将自动具有该注解

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4