注解
1、预定义注解
@Deprecated: 标记该方法已经过时。JVM
2、自定义注解
语法:
public @interface 注解名{ }
如何使用:
public class PateTxt { public static void main(String[] args) { q q = new q(); q.show("ssss"); } } @interface BH{ } @BH //类 class q{ //属性 @BH private String name; @BH //方法 public void show(String n){ System.out.println("==="+n); } }
@Override:----JVM解析了该注解
3、元注解
//源码时生效 SOURCE, //字节码时生效 CLASS, //运行时生效。反射。 RUNTIME@Target: 该注解可以使用在哪些地方
//使用在类上 TYPE, //使用在属性上 FIELD, //使用在方法上 METHOD, //使用在参数 PARAMETER, //使用在构造方法上 CONSTRUCTOR//元注解 /** * TYPE --作用在类上 * METHOD --作用在方法上 * FIELD --作用属性上 * PACKAGE --作用在参数是按 * CONSTRUCTOR --作用在构造方法上 */ @Target(value = {ElementType.TYPE,ElementType.METHOD,ElementType.FIELD,ElementType.PACKAGE,ElementType.CONSTRUCTOR}) /** * SOURCE --源码时生效 * CLASS --字节码时生效 * RUNTIME --运行时生效 */ @Retention(value = RetentionPolicy.RUNTIME) //自定义注解 @interface BH{ } @BH //类 class q{ //属性 @BH private String name; @BH //方法 public void show(String n){ System.out.println("==="+n); } }@Documented: 在生成api文档是是否含有该注解。
语法:
public @interface 注解名{
数据类型 属性名() default 默认值;
//如果没有设置默认值,那么在使用该注解时必须为该属性指定值。
}
//元注解 /** * TYPE --作用在类上 * METHOD --作用在方法上 * FIELD --作用属性上 * PACKAGE --作用在参数是按 * CONSTRUCTOR --作用在构造方法上 * BH注解只能使用在类和方法上,默认可以在任何位置使用 */ @Target(value = {ElementType.TYPE,ElementType.METHOD,ElementType.FIELD,ElementType.PACKAGE,ElementType.CONSTRUCTOR}) /** * SOURCE --源码时生效 * CLASS --字节码时生效 * RUNTIME --运行时生效 * 运行有效这个使用的最多 * SOURCE > CLASS > RUNTIME 默认在字节码生效 */ @Retention(value = RetentionPolicy.RUNTIME) //自定义注解 @interface BH{ String value() default ""; int age() default 18; String[] hobby() default {}; } @BH(value = "Hello") //类 class q{ //属性 @BH private String name; @BH //方法 public void show(String n){ System.out.println("==="+n); } }

浙公网安备 33010602011771号