最近在学习框架,发现框架中注解用的挺多的,似乎官方也推荐使用注解。感觉注解还是和代码耦合在了一起不像xml那样配置完全外化,可能还是xml方便维护一些。不过好处是真的非常的方便,代码极少,不像xml看起来那样的臃肿。
下面是个人的一些整理,希望对大家有点帮助:
1、基本概念
注解相当于一种标记,在程序中加了注解就等于为程序打上了某种标记,没加,则等于没有某种标记,以后,javac编译器,开发工具和其他程序可以用反射来了解你的类及各种元素上有无何种标记,看你有什么标记,就去干相应的事。标记可以加在包,类,字段,方法,方法的参数以及局部变量上。
2、3个内建注解
@Override:只能用在方法之上的,用来告诉别人这一个方法是改写父类的。
@Deprecated:建议别人不要使用旧的API的时候用的,编译的时候会用产生警告信息,可以设定在程序里的所有的元素上。
@SuppressWarnings:表示关闭一些不当的编译器警告信息。
3、4个元注解
分别为@Target,@Retention,@Documented,@Inherited。
@Target
表示该注解用于什么地方(限制注解),可能的ElemenetType参数包括:
- ElemenetType.CONSTRUCTOR构造器声明。
- ElemenetType.FIELD域声明(包括enum实例)。
- ElemenetType.LOCAL_VARIABLE局部变量声明。
- ElemenetType.METHOD方法声明。
- ElemenetType.PACKAGE包声明。
- ElemenetType.PARAMETER参数声明。
- ElemenetType.TYPE类,接口(包括注解类型)或enum声明。
@Retention
表示在什么级别保存该注解信息。可选的RetentionPolicy参数包括:
- RetentionPolicy.SOURCE注解将被编译器丢弃。
- RetentionPolicy.CLASS注解在class文件中可用,但会被VM丢弃。
- RetentionPolicy.RUNTIMEVM将在运行期也保留注释,因此可以通过反射机制读取注解的信息。
@Documented
将此注解包含在javadoc中
@Inherited
允许子类继承父类中的注解
4、自定义注解
//定义注解 package org.hgs.Annotation; public @interface MyAnnotation { //定义属性 String value(); //属性默认值 String name() default "姓名"; int age() default 22; }
//使用注解 package org.hgs.Annotation; public class TestAnnotation { //使用带属性的注解时,需要给属性赋值,定义时给予默认属性值,这可以不带属性值 @MyAnnotation(value = "good",name="张三",age=24) public void getObjectInfo(){ } }
5、下面看一个测试注解例子就一目了然了:
package org.hgs.Annotation; import java.lang.annotation.Retention; import java.lang.annotation.Target; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.ElementType; //定义注解 @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE, ElementType.METHOD}) public @interface MyAnnotation { //定义属性 String value(); //属性默认值 String name() default "姓名"; int age() default 22; int[] array() default {1,2,3}; String color(); }
package org.hgs.Annotation; //使用注解 @MyAnnotation(value = "good",name="张三",age=24, color = "red" ,array={3,4,5}) public class TestAnnotation2 { public static void main(String[] args) { // 检查类AnnotationTest是否含有@MyAnnotation注解 if (TestAnnotation2.class.isAnnotationPresent(MyAnnotation.class)) { // 若存在就获取注解 MyAnnotation annotation = (MyAnnotation) TestAnnotation2.class .getAnnotation(MyAnnotation.class); System.out.println(annotation); // 获取注解属性 System.out.println(annotation.color()); System.out.println(annotation.value()); // 数组 int[] arrs = annotation.array(); for (int arr : arrs) { System.out.println(arr); } } } }
相关推荐
Java 注解详解 Java 注解(Annotation)是 JDK 5.0 及以后版本引入的一个特性。它是一个新的类型,与接口类似,位于同一个层次,称为 Java 的一个类型(TYPE)。注解可以声明在包、类、字段、方法、局部变量、方法...
### JAVA -- JPA注解详解 #### 1. @Entity 注解 - **定义**:`@Entity` 是 Java Persistence API (JPA) 中用于标识一个类作为持久化实体类的关键注解。它告诉 JPA 提供商(如 Hibernate)这个类将会映射到数据库表...
**brpc-java详解** brpc-java是百度内部的RPC(Remote Procedure Call)框架在Java语言上的实现,旨在为Java开发者提供高效、可靠的分布式服务调用能力。RPC框架的核心目标是简化分布式系统中服务间的通信,使得...
Java 程序使用 JPA 注解详解 Java 程序使用 JPA 注解可以实现对象关系映射(ORM),使得 Java 应用程序能够与关系数据库进行交互。JPA(Java Persistence API)提供了多种注解来定义实体类与数据库表之间的映射关系...
Java 注解详解 Java 注解(Annotation)是 JDK 5.0 及以后版本引入的一个特性,它是一个新的类型,与类、接口、枚举是在同一个层次。注解可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些...
【Java注解详解】 Java注解(Annotation)是Java编程语言的一个重要特性,它提供了一种安全的方式来元数据(metadata)与程序元素关联,如类、接口、字段和方法等。注解不会改变程序的基本结构,但它们可以被编译器...
WebService 注解详解 WebService 是一种基于 XML 的远程过程调用(RPC)技术,它允许不同的系统之间通过网络进行通信。在 Java 中,WebService 通常使用 JAX-WS(Java API for XML-Based Web Services)来实现。...
Java @PostConstruct 和 @PreConstruct 注解详解 Java 中的 @PostConstruct 和 @PreConstruct 注解是从 Java EE5 规范开始引入的,它们是用来修饰 Servlet 生命周期的两个重要的注解。下面将详细介绍这两个注解的...
《Java工具类详解——以Trinea-java-common为例》 在Java开发中,工具类库扮演着重要的角色,它们提供了一系列方便、高效的通用方法,能够帮助开发者简化代码,提高开发效率。"trinea-java-common"就是一个典型的...
但功能却不仅仅是注释那么简单。注解(Annotation) 为我们在代码中添加信息提供了一种形式化的方法,是我们可以在稍后某个时刻方便地使用这些数据(通过 解析注解 来使用这些数据),常见的作用有以下几种:生成...
### Struts2 注解详解 #### 一、Struts2 Convention 插件介绍与使用 在 Struts2 框架的发展过程中,随着版本的更新和技术的演进,其配置方式也发生了变化。从 Struts2.1 版本开始,官方不再推荐使用 Codebehind ...
Java注解 - **注解概述**: - 注解是一种元数据,可以用来修饰类、方法、字段等。 - Java提供了内置注解(如`@Override`、`@Deprecated`)和自定义注解。 - **注解的应用**: - 注解主要用于生成文档、验证...
Java注解是Java编程语言中的一个重要特性,它允许程序员在代码中嵌入元数据,即有关代码的信息,而不直接改变代码的行为。注解的引入是在Java 1.5版本中,自此以后,它们在各种Java框架和库中得到了广泛应用,例如...
SpringBoot 整合 XXL-JOB 详解 本文将详细讲解 SpringBoot 如何整合 XXL-JOB,以实现任务调度和执行。XXL-JOB 是一个分布式任务调度平台,提供了一个简单、灵活、可靠的任务调度解决方案。通过整合 XXL-JOB,开发者...
Struts2是Java Web开发中一个非常重要的MVC(Model-View-Controller)框架,它在Java EE领域中被广泛使用,为开发者提供了一种结构化的应用开发方式,简化了Web应用程序的构建过程。本系列教程将深入讲解Struts2框架...
### CXF接口常用注解详解 #### 一、概述 CXF是一个强大的开源框架,用于构建和服务SOA架构中的各种Web服务。它提供了多种方式来创建Web服务客户端和服务端,其中包括利用注解来简化开发过程。本文档将详细介绍CXF...
java @interface 注解详解及实例 Java 中的注解(Annotation)是从 Java 5 开始引入的一种特殊类型的接口,它可以在编译时、类加载时或运行时被读取,并且可以被用来生成描述信息、强制编译检查、.runtime ...
### Java软件开发实战:Java基础与案例开发详解 #### 知识点概览 本教程主要围绕Java的基础知识和实际应用展开,旨在帮助初学者掌握Java编程的核心概念和技术要点,并通过丰富的实例加深理解。以下是对该教程各部分...
### Java核心API知识点详解 #### 一、集合框架 **1.1 什么是集合** 集合是Java编程语言中用于存储和操作多个元素的一种容器。它提供了动态管理元素的能力,允许在运行时添加或删除元素。 **1.2 集合与数组** - ...
Java中自定义注解介绍与使用场景详解 Java 中的自定义注解是指开发者可以根据需要定义和使用的注解,可以在编译期、加载期和运行期进行处理。自定义注解可以扩展 Java 语言的功能,提供更多的 Metadata 信息,方便...