注解(Java程序的一种特殊“注释”,用于工具处理的标注)

1.使用注解

a.含义

        i.注解是放在类,字段,方法,参数前的一种特殊“注释”。
        ii.注释会被编译器直接忽略,注解则可以被编译器打包带进class文件,因此,注解是一种用于标注的“元数据”。
        iii.从JVM角度看,注解对代码逻辑没有任何影响,如何使用注解完全由工具决定。

b.三类注解

        i.由编译器使用的注解,不会编译进.class文件,编译后被编译器扔掉;如:@Override、@SuppressWarnings。
        ii.由工具处理.class文件使用的注解,有些工具在加载class的时候,对class动态处理实现特定功能。这类注解会被编译进.class文件,加载结束后不会加载进JVM,被底层库使用,无需处理。
        iii.程序运行期读取的注解,加载后一直存在于JVM中,最常用的注解。(Java代码读取注解实现功能,JVM并不识别该注解)

c.注意

        i.定义注解时,配置参数类型:
                1.所有基本类型;
                2.String;
                3.枚举;
                4.所有基本类型,String,枚举以及Class的数组。
        ii.注解配置参数必须是常量,所以定义注解时就确定了所有参数的值,正常每个参数都有默认值,如果不设置就使用默认值。
        iii.如果参数名称是value且只有一个参数,那么可以省略参数名称。

2.定义注解

a.含义     

        用@interface来定义注解。注解的参数类似无参方法,用default设定一个默认值(强烈推荐),最常用的参数应命名为value(有且只有它时可以省略参数名称)。

b.元注解(修饰其他注解的注解)

        i.@Target(最常用)
                定义源码被应用于哪些位置。
                1.ElementType.TYPE:类或接口或枚举或Record。
                2.ElementType.FIELD:成员变量字段。
                3.ElementType.METHOD:方法。
                4.ElementType.CONSTRUCTOR:构造方法。
                5.ElementType.PARAMETER:方法参数。
                6.ElementType.LOCAL_VARIABLE:局部变量。
                7.ElementType.ANNOTATION_TYPE:注解。
                8.ElementType.PACKAGE:包。

        ii.@Retention(默认CLASS期间)
                定义了注解的生命周期。
                1.RetentionPolicy.SOURCE:仅编译期间。
                2.RetentionPolicy.CLASS:仅class文件。
                3.RetentionPolicy.RUNTIME:程序运行期(自定义常用!)

        iii.@Documented
                是否将注解信息添加到javadoc文档中。
        iv.@Repeatable(注解可重复,不常用)
                修饰的注解,可在同位置使用多个同样的注解。

        v.@Inherited(继承)
                定义子类是否可继承父类定义的注解。仅针对@Target(ElementType.TYPE)类型的注解有效,并且仅针对class的继承,对interface的继承无效。

c.如何定义注解

        i.使用@interface定义注解类。
        ii.添加参数、默认值;把最常用的参数定义为value(),所有参数都尽量设置默认值。
        iii.添加元注解;必须设置@Targer和@Retention,@Retention一般设置为RUNTIME。

3.处理注解

a.注意

        i.所有注解都是class,都继承自java.lang.annotation.Annotation。
        ii.读取注解,要使用反射,反射API通过Class实例封装了类的所有信息。

b.获取注解 

        i.判断某个注解是否存在于Class、Field、Method或Constructor。
                1.Class.isAnnotationPresent(注解.Class)
                2.Field.isAnnotationPresent(注解.Class)
                3.Method.isAnnotationPresent(注解.Class)
                4.Constructor.isAnnotationPresent(注解.Class)
        ii.用反射API获取注解。
                1.Class.getAnnotation(注解.Class)
                2.Field.getAnnotation(注解.Class)
                3.Method.getAnnotation(注解.Class)
                4.Constructor.getAnnotation(注解.Class)

c.使用注解

        i.定义了注解,本身对逻辑程序没有任何影响,我们自己编写代码来使用注解,JVM不会自动给注解添加任何处理逻辑。
                1.定义注解。

                2.使用注解。

                3.编写代码来使用注解。

4.常用注解

a.@RequestBody和@RequestParam()

        i.@RequestParam()
                1.一般与get请求一起使用,一个方法中可以有多个,用来接收普通参数。
                2.加上该注解,表示参数必传,并且指定前端传过来的参数名。
                3.可以通过required = false设置参数为非必传,非必传时可设置默认值defaultValue = "0"。
        ii.@RequestBody
                1.一般与post请求一起使用,一个方法中只能有一个,用来接收json格式的数据。
                2.将json数据转化成Map形成的key-value键值对
        iii.注意
                1.如果不是放在请求体里可以用@RequestParam()接收,也可以什么都不写。

### 回答1: 是的,Java 注解可以理解为一种特殊注释注解Java 编程语言中的一种元素,它可以在编译时或运行时被读取。注解可以用来为 Java 程序中的元素(如类、方法、变量等)添加元数据,这些元数据可以被 Java 的编译器或运行时环境使用。注解的语法与注释的语法相似,但是它们的功能更加强大。 注解的使用方式也很简单,只需要在需要添加注解Java 元素前面加上@符号,然后指定注解的名称即可。例如,下面的代码使用@Override注解标注一个方法: ``` public class MyClass { @Override public String toString() { return "MyClass"; } } ``` Java 程序也可以自定义注解,使用@interface关键字来声明一个注解类型,然后在注解类型中定义注解的属性。例如,下面的代码定义了一个名为MyAnnotation注解类型,其中有一个名为value的属性: ``` @interface MyAnnotation { String value(); } ``` 注解的使用方式与普通的类似,只需要在需要添加注解的元素前加上@符号,然后指定注解的名称和属性值即可。例如,下面的代码使用MyAn ### 回答2: Java注解可以理解为一种特殊注释,但它不仅仅是传统注释的扩展,还具有一定的功能和作用。 首先,注解一种在源代码中存在的特殊标记,不会参与实际的编译和运行过程,因此不会影响程序的执行结果。相较于传统注释注解能够在程序中提供额外的信息,并且能够被编译器或者其他工具所读取和利用。 其次,注解可以用于程序中的代码、类、方法、字段等元素附加元数据(metadata)。它们可以用来描述程序的行为、使用说明、配置参数等信息。通过使用注解,开发者可以在代码中加入相应的标记,使代码的含义更加清晰明确。 另外,注解还可以用于完成一些特定的逻辑操作。例如,可以根据注解来生成相应的代码、指定运行时的行为,或者进行代码检查等。一些常见的注解,如@Override、@SuppressWarnings等,已经在Java的标准库中提供,并被广泛应用于代码的编写和维护过程中。 总的来说,Java注解一种特殊注释,但它不仅仅是用来说明、备注代码的,还具有一定的功能和作用。通过合理地使用注解,可以提高代码的可读性、可维护性和可扩展性。 ### 回答3: Java注解可以理解为一种特殊注释,但它与普通的注释在功能和作用上有很大的不同。 首先,Java注解是向编译器或其他工具提供额外信息的方法。它可以应用于类、方法、变量等程序元素上,用于提供额外的元数据信息。而普通的注释只是对代码进行说明,对编译器或其他工具没有实际的影响。 其次,Java注解可以通过反射机制在运行时获取并处理。这使得我们可以在运行时通过注解来实现一些特定的逻辑。例如,可以通过注解来实现权限控制、数据验证等功能。而普通的注释在运行时是无法获取和处理的。 此外,Java注解还可以通过工具生成文档、进行代码分析、实现自动化的代码生成等。它允许我们对代码进行更灵活的控制和处理。 综上所述,虽然Java注解可以理解为一种特殊注释,但它远不止于普通注释的功能。它是一种用于提供额外元数据信息、可以在运行时处理特殊机制。通过注解,我们可以实现更加灵活和强大的代码控制和处理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值