Java自学-注解与反射(1)

Java自学-注解与反射(1)

1、什么是注解

Java自学-注解与反射(1)

Java自学-注解与反射(1)

package lesson01;

/**
 * Author: Gu Jiakai
 * Date: 2021/8/30 20:56
 * FileName: Test01
 * Description:
 */
//什么是注解
public class Test01 extends Object{
//    @Override,重写的注解。
    @Override
    public String toString() {
        return super.toString();
    }
}

2、内置注解

Java自学-注解与反射(1)

package lesson01;

import java.util.ArrayList;
import java.util.List;

/**
 * Author: Gu Jiakai
 * Date: 2021/8/30 20:56
 * FileName: Test01
 * Description:
 */
//什么是注解
public class Test01 extends Object{
//    @Override,重写的注解。
    @Override
    public String toString() {
        return super.toString();
    }

//    @Deprecated  不推荐程序员使用,但是可以使用。或者存在更好的方式
    @Deprecated
    public static void test(){
        System.out.println("Deprecated");
    }

    @SuppressWarnings("all")
    public void test02(){
        List list=new ArrayList();
    }
    public static void main(String[] args) {
        test();
    }
}

3、元注解

Java自学-注解与反射(1)

一个类里面只能有一个公共的方法

package lesson01;

import java.lang.annotation.*;

/**
 * Author: Gu Jiakai
 * Date: 2021/8/30 21:08
 * FileName: Test02
 * Description:
 */
//测试元注解
@MyAnnotation
public class Test02 {

    public void test(){

    }
}

//定义一个注解。
//@Target 表示我们的注解可以用在哪些地方
@Target({ElementType.METHOD,ElementType.TYPE})
//Retention 表示我们的注解在什么地方还有效
//runtime>class>source
@Retention(value= RetentionPolicy.RUNTIME)
//Documented表示是否将我们的注解生成在JAVAdoc 中
@Documented
//@Inherited子类可以继承父类的注解
@Inherited
@interface MyAnnotation{

}

4、自定义注解

Java自学-注解与反射(1)

package lesson01;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * Author: Gu Jiakai
 * Date: 2021/8/30 21:19
 * FileName: Test03
 * Description:
 */
//自定义注解
public class Test03 {
    //注解可以显示赋值,如果没有默认值,我们就必须给注解赋值。
    @MyAnnotation2(age=18)
    public void test(){

    }

    @MyAnnotation3("*")
    public void test2(){

    }
}


@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation2{
    //注解的参数:参数类型+参数名();
    String name() default "";
    int age();
    int id() default -1;//如果默认值为-1,代表不存在﹒

    String[] schools() default {"南京晓庄学院","清华大学"};
}

@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation3{
    //只有一个值,注解处可省略书写value。
    String value();
}

5、反射概述

Java自学-注解与反射(1)

Java自学-注解与反射(1)

Java自学-注解与反射(1)

Java自学-注解与反射(1)

上一篇:23. Merge k Sorted Lists 合并k个排序链表


下一篇:数组部分和问题