Java注解Annotation与自定义注解详解
Java注解(Annotation)是一种元数据,提供了关于程序元素(如类、方法、字段等)的补充信息,能够被Java虚拟机(JVM)和其他Java工具读取。Java注解可以分为两类:预定义注解和自定义注解。预定义注解是Java提供的基本注解,如@Override、@Deprecated、@SuppressWarnings等,而自定义注解则是用户根据需要自己定义的注解。
预定义注解:
1. @Override:用于标识该方法继承自超类,当父类的方法被删除或修改了,编译器会提示错误信息。
2. @Deprecated:表示该类或者该方法已经不推荐使用,已经过期了,如果用户还是要使用,会生成编译的警告信息。
3. @SuppressWarnings:用于忽略的编译器警告信息。
4. Junit测试:@Test
5. Spring的一些注解:@Controller、@RequestMapping、@RequestParam、@ResponseBody、@Service、@Component、@Repository、@Resource、@Autowire
6. Java验证的注解:@NotNull、@Email
自定义注解:
Java注解基本知识:
1. Java注解数据类型:注解是写在.java文件中,使用@interface作为关键字,所以注解也是Java的一种数据类型,从广泛的定义来说,Class、Interface、Enum、Annotation都属于Class类型。
2. Java元注解:元注解在创建注解的时候,需要使用一些注解来描述自己创建的注解,就是写在@interface上面的那些注解,这些注解被称为元注解,如在Override中看到的@Target、@Retention等。
元注解:
1. @Documented:用于标记在生成javadoc时是否将注解包含进去,可以看到这个注解和@Override一样,注解中空空如也,什么东西都没有。
2. @Target:用于定义注解可以在什么地方使用,默认可以在任何地方使用,也可以指定使用的范围,开发中将注解用在类上(如@Controller)、字段上(如@Autowire)、方法上(如@RequestMapping)、方法的参数上(如@RequestParam)等比较常见。
3. ElementType:枚举类型,用于指定注解可以应用于哪些元素,如TYPE、FIELD、METHOD、PARAMETER、CONSTRUCTOR、LOCAL_VARIABLE、ANNOTATION_TYPE、PACKAGE等。
如何自定义注解:
1. 使用@interface关键字定义注解。
2. 使用@Target注解指定注解可以应用于哪些元素。
3. 使用@Retention注解指定注解的生命周期。
Java注解的应用场景:
1. 代码验证:使用注解来验证代码的正确性,如@NotNull、@Email等。
2. 框架集成:使用注解来集成框架,如Spring的@Controller、@RequestMapping等。
3. 代码生成:使用注解来生成代码,如Javadoc等。
4.AspectJ:使用注解来实现aspect-oriented programming(AOP)。
Java注解是一种功能强大且灵活的机制,能够提供关于程序元素的补充信息,并且可以根据需要自定义注解以满足特定的需求。