当前位置: 首页> 游戏> 游戏 > 注解复习(java)

注解复习(java)

时间:2025/8/1 5:28:25来源:https://blog.csdn.net/qq_50249256/article/details/140305792 浏览次数:0次

文章目录

    • 注解
      • 内置注解
        • **@Deprecated**
        • @Override
        • @SuppressWarnings【不建议使用】
        • @Funcationallnterface
      • 自定义注解
      • 元注解
        • @Retention
        • @Target
        • @Documented
        • @Inherited 和 @ Repeatable
      • 反射注解

前言笔记基于动力节点

注解

  • 注解可以标注在 类上,属性上,方法上等。
  • 注解可以做到在不改变代码逻辑的前提下在代码中嵌入补充信息

注解:给编译器看的,或给其他程序看的,程序根据有没有这个注解来决定不同的处理方式

框架 = 反射 + 注解 + 设计模式

内置注解

在这里插入图片描述

@Deprecated
/** JDK 的内置注解:@Deprecated* 1. 被这个注解标注的元素已过时* 2. 这个注解是给编译器看的,编译器看到这个注解之后会有警告提示信息* 3. 可以标注属性,方法,类*/public class Test {//这里有警告MyClass1 myClass1 = new MyClass1();
}@Deprecated
class MyClass1 {// since 属性表示从哪个版本开始已过时// forRemoval 属性值如果是 true 表示已移除@Deprecated(since = "9", forRemoval = true)public static int num = 100;@Deprecatedpublic void doSoms() {}
}

在这里插入图片描述



@Override
/** JDK 的内置注解:@Override* 1. 给编译器看的* 2. 这个注解标注实例方法,被标注的方法必须是重写父类的方法* 3. 这个注解就是在编译阶段进行方法检查,检查这个方法是否重写了父类,如果没有重写父类报错* 4. 只能标注实例方法*/public class Test extends myclass{@Overridevoid test() {}
}class myclass {void test() {};
}


@SuppressWarnings【不建议使用】
/** JDK 的内置注解:@SuppressWarnings* 1. 主要作用:抑制警告* 2. 该注解常见的属性值*     rewtypes: 抑制未使用的泛型的警告*     resource: 抑制未关闭资源的警告*     deprecation: 抑制使用了已过时资源的警告*     all: 抑制所有警告*/public class Test {public static void main(String[] args) throws FileNotFoundException {//取消没用泛型的警告@SuppressWarnings("rawtypes")List list = new ArrayList();//取消没关流的警告@SuppressWarnings("resource")FileInputStream in = new FileInputStream("e:\\file.txt");}
}


@Funcationallnterface

检查是否符合 “函数式接口” 的特征

/** JDK 的内置注解:@Functionallnterface* 1. 这个注解专门用来标注接口的* 2. 被标记的接口必须是一个函数式接口,如果不是函数式接口,编译器报错* 3. 这个注解也是给编译器看的* 4. 函数式接口:接口中抽象方法有且仅有一个
*/
public class Test {public static void main(String[] args) throws FileNotFoundException {}
}@FunctionalInterface
interface T {void fly();
}


自定义注解

使用 @interface 来定义注解

默认情况下可以出现在类,方法,属性,构造方法,方法参数上

所有自定义注解,父类是:java.lang.annotation.Annotation

在这里插入图片描述

public @interface MyAnnotation {/*** 注解也可以定义属性,属性名后面必须添加 ()*///属性String drive();String url();String[] ab();
}
public class Test {public static void main(String[] args){//使用注解@MyAnnotation(drive = "aaa",url = "abc",ab = {"1,2,3"},)int i = 10;}
}



元注解

在这里插入图片描述



@Retention

在这里插入图片描述

@Retention(value = RetentionPolicy.SOURCE)
@Retention(value = RetentionPolicy.CLASS)
@Retention(value = RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
}


@Target

在这里插入图片描述



@Documented

在这里插入图片描述

被这个注解声明的注解,可以生成帮助文档



@Inherited 和 @ Repeatable

在这里插入图片描述




反射注解

在这里插入图片描述

  • field.isAnnotationPersent(AnnotationTest02.class)判断有没有这个注解
  • AnnotationTest02 an = field.getAnnotation(AnnotationTest02.class):获取注解
关键字:注解复习(java)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: