TYPE:类、接口(包括注解类型)或枚举声明。 FIELD:字段声明(包括枚举常量)。 METHOD:方法声明。 PARAMETER:参数声明。 CONSTRUCTOR:构造器声明。 LOCAL_VARIABLE:局部变量声明。 ANNOTATION_TYPE:注解类型声明。 PACKAGE:包声明(从Java 8开始)。 TYPE_PARAMETER(Java 8新增)
@Retention(RetentionPolicy.CLASS) // 默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得, @Retention(RetentionPolicy.RUNTIME) // 注解会在class字节码文件中存在,在运行时可以通过反射获取到 @Target:注解的作用目标 @Target(ElementType.TYPE) //接口、类、枚举、注解 @Target(ElementType.FIELD) /...
> type = getTargetClass(); if (Map.class == type) { return Collections.emptyMap(); } else if (List.class == type) { return Collections.emptyList(); } else if (Set.class == type || Collection.class == type) { return Collections.emptySet(); } throw new NoSuchBeanDefinitionException...
TYPE}) @Retention(RetentionPolicy.RUNTIME) @Inherited public @interface MyAnnotation { String value() default "0"; String des() default "我是一个自定义注解"; } 使用在类上People package com.haibing.customizeAnnotation; import java.util.Objects; /** * * @date 2022/05/05 * @Version 1.0...
7.TYPE:用于描述类、接口(包括注解类型) 或enum声明 @Retention @Retention定义了该Annotation被保留的时间长短: 某些Annotation仅出现在源代码中,而被编译器丢弃;而另一些却被编译在class文件中;编译在class文件中的Annotation可能会被虚拟机忽略,而另一些在class被装载时将被读取(请注意并不影响class的执行,因为Anno...