Java--反射--注解
- 什么是注解:
-
内置注解:
-
package com.model.zhujie; import java.util.ArrayList; /** * @Description:测试类 * @Author: 张紫韩 * @Crete 2021/6/26 18:13 * * 什么是注解(Annotation): * */ @SuppressWarnings("all") //@SuppressWarnings("all") :镇压警告的注释 public class ZhuJieDemo01 { public static void main(String[] args) { } // @Override:重写注解 @Override public String toString() { return super.toString(); } // @Deprecated :已过时的,不推荐使用,存在危险或者存在更好的方式替代 @Deprecated public void test(){ System.out.println("*****"); } public void test02(){ ArrayList<Object> list = new ArrayList<>(); } }
-
-
元注解:
-
package com.model.zhujie; import java.lang.annotation.*; /** * @Description:测试类 * @Author: 张紫韩 * @Crete 2021/6/26 18:34 * * 测试元注解: */ //自定义元注解 public class ZhuJieDemo02 { @MyAnnotation public void test(){ } } @Target(value = {ElementType.METHOD,ElementType.TYPE}) //选择自定义注解的使用地方 //runTime>class>sources @Retention(value = RetentionPolicy.RUNTIME) //表示我们的注解在什么地方还有效(运行时还有效) @Documented //表示是否将我们的注解生成在JAVAdoc文档中 @Inherited //表示子类可以继承父类的注解 @interface MyAnnotation{ }
-
-
自定义注解:
-
package com.model.zhujie; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * @Description:测试类 * @Author: 张紫韩 * @Crete 2021/6/26 18:51 * * 自定义注解 */ public class ZhuJieDemo03 { @MyAnnotation2(name = "张紫韩",age=15) //若创建的注解有声明默认值则可以不用在这里写,若没有声明默认值则我们必须填写他的之,否则会报错 public void test(){ } @MyAnnotation3("张紫韩") public void test02(){ } } @Target(value = {ElementType.METHOD,ElementType.TYPE}) //定义注解的使用地方 @Retention(RetentionPolicy.RUNTIME) //定义注解的生效范围,一般是RUNTIME @interface MyAnnotation2{ // 注解的内容: // 注解参数: 类型+参数名() :参数 String name(); int age() default 1; String address() default ""; String[] school() default {"清华大学","北京大学"}; } @Target({ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @interface MyAnnotation3{ String value(); }