day10-注解跟反射(Annotation)

day10-注解跟反射(Annotation)

什么是注解

注解与注释是有区别的

day10-注解跟反射(Annotation)

常用注解

@Override:重写的注解

@Functionalnterface:函数接口注解

@Deprecated:已废弃注解

@SuppressWarnings(valu=“unchecked”):易执行的

@SuppressWarnings(“all”):镇压警告,系统警告消失

@Target({TYPE,FIELD,METHOD,PARMETER,CONSTRUCTOR,LOCAL_VARIABLE}):目标类型,使用范围

内置注解

day10-注解跟反射(Annotation)

元注解

day10-注解跟反射(Annotation)

//元注解测试

    @MyAnnotation

public class TestAnnotation {
    @MyAnnotation
    
    public static void main(String[] args) {

    }



}
//    定义一个注解
//@Target:规定注解可以使用的类型范围
//TYPE:类,METHOD:方法,Annotation_TYPE:注解类型
//Construct:构造器,FIELD:字段,PARAMETER:参数,LOCAL_VARIABLE:本地变量,PACKAGE:包类型
@Target({ElementType.TYPE,ElementType.METHOD})
//表示我们的注解在什么时候还有效   RunTIME>class>sources
@Retention(value = RetentionPolicy.RUNTIME)
//表示是否将我们的注解声明在JAVAc文件中
@Documented
//说明子类可以继承父类的该注解
@Inherited
@interface MyAnnotation{

}

如何自定义注解

ElementTYPE:对象类型

day10-注解跟反射(Annotation)

public class TestAnnotation {

    //有默认值的参数可以不写使用默认值,没有默认值的参数必须赋值
    @MyAnnotation2(name="史佳豪",money = 1000,has = {12,13})

    @MyAnnotation3(5)

    public static void main(String[] args) {

    }



}


//注解中定义参数
@Target(ElementType.METHOD)
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Documented
@interface MyAnnotation2{
//        参数定义:参数类型 + 参数名 +()选+ default+默认值 +;
    String name();
    String sex() default "MAN";
    int age()default 18;
    int money();
    int[] has();//定义一个int类型的数组参数

}
@Target(ElementType.METHOD)
@Inherited
@Retention(RetentionPolicy.RUNTIME)
//当只有一个参数时参数名应使用value,这样在注解添加参数时可以不写参数名,直接赋值
@interface MyAnnotation3{
        int value ();
}
上一篇:暑期训练day10 AND 0, Sum Big


下一篇:算法练习Day10 [LeetCode]974. 和可被 K 整除的子数组