Java高级—注释

1.注解的分类

注解是给程序看的,但看到这个注解时就应该解析他了。

注解的分类:

1.预定义注解

        预定义注解就是JDK自带的一些注解,该注解被jvm解析

        例如:

                

1.@override:重写注解符合重写的规则
2.@Deprecated:表示已经过时
3.@SuppressWarnings:表示压制警告 一般不使用
4.@FuntionInterface:表示函数式接口,表示该接口中有且只有有一个方法

2.自定义注解

3.源注释

        定义在注解上的注解称为元注解。

2.预定义注解

package com.lzl.text05;

/**
 * @create 2022-07-14
 */
public class Text06 {
    public static void main(String[] args) {
        Info info = new Info();
        //表示该方法已过时
        info.fun();
    }
}
//函数式接口 有且仅有一个抽象方法
@FunctionalInterface
interface USB{
    public void show();
    default void fun(){

    };
}
class Info{
    @Override //重写的注解:特点 该方法必须与父类中的方法名相同,参数相同,返回类型相同,修饰符不能小于父类方法的修饰符,抛出的异常不能大于父类的
    public String toString(){
        return super.toString();
    }
    @Deprecated //表示该方法已过时
    public void fun(){

    }
}

3.自定义注解

语法:

public @interface 注解名{
   //注解属性
}


@interface 注解名{
     数据类型 属性名() default 默认值;
}

使用自定义注解:

类 方法  属性 加@注解名

实例:

package com.lzl.test06;

import java.lang.annotation.*;

/**
 * @create 2022-07-14
 */
public class Test01 {
}
//表示该注解可以使用的位置
/* TYPE 表示可以作用在类 接口 枚举
*  FIELD 属性上
*  METHOD 普通方法上
*  CONSTRUCTOR 构造方法上
*  LOCAL_VARIABLE 局部变量上
* */
@Target(value = {ElementType.TYPE,ElementType.METHOD})
//表示注解在什么时候生效
/* SOURCE 源码时生效
*  CLASS 字节码时生效
*  RUNTIME  运行时生效 在jvm内存运行时生效 一般都会被设置为运营时有效
* */
@Retention(value = RetentionPolicy.RUNTIME)
//当生成api文件时 该注解是否存在
@Documented
//该注解是否会被子类继承
@Inherited
@interface My{
        String value() ;
        int age() default 15; //当为该注解设置默认值 在使用时可以不为该属性赋值
        String[] hobby() default {};
}
@My(value = "15",hobby = {"吃饭","睡觉","打豆豆"})
class Student{
    private String name;
    //使用注解时 该注解有且只有一个属性没有赋值,而且该属性的名称为value那么再给该属性赋值时,可以省略value
    @My("15")
    public void fun(){

    }
}

43元注释

package com.lzl.test06;

import java.lang.annotation.*;

/**
 * @create 2022-07-14
 */
public class Test01 {
}
//表示该注解可以使用的位置
/* TYPE 表示可以作用在类 接口 枚举
*  FIELD 属性上
*  METHOD 普通方法上
*  CONSTRUCTOR 构造方法上
*  LOCAL_VARIABLE 局部变量上
* */
@Target(value = {ElementType.TYPE,ElementType.METHOD})
//表示注解在什么时候生效
/* SOURCE 源码时生效
*  CLASS 字节码时生效
*  RUNTIME  运行时生效 在jvm内存运行时生效 一般都会被设置为运营时有效
* */
@Retention(value = RetentionPolicy.RUNTIME)
//当生成api文件时 该注解是否存在
@Documented
//该注解是否会被子类继承
@Inherited
@interface My{
        String value() ;
        int age() default 15; //当为该注解设置默认值 在使用时可以不为该属性赋值
        String[] hobby() default {};
}
@My(value = "15",hobby = {"吃饭","睡觉","打豆豆"})
class Student{
    private String name;
    //使用注解时 该注解有且只有一个属性没有赋值,而且该属性的名称为value那么再给该属性赋值时,可以省略value
    @My("15")
    public void fun(){

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值