Annotation(一)——注解开发介绍
<p>在编程中,一直强调的一点就是注释的编写,注释的规范等等。尤其是越是核心,程序越复杂,逻辑越多的清空下,注释的编写对我们以后的阅读代码,维护软件起着至关重要的作用。一款软件有着好的注释,相当于一个中国人阅读一篇带着汉语翻译的英文文章,其阅读速度是事半功倍的效果。但是今天想要总结的却不是代码中的注释需要注意的问题,而是JDK5.0以后提供的一种新特性。</p> | |
<p> </p> | |
<p> 一, Annotation(注解),其实就是对类,方法,属性进行的一种标示,一种注释(注意,这个里注释不是为了让我们开发或维护人员阅读更方便,而是为JVM看呢),通过这些标示,Java虚拟机可以完成这些标示对应的功能。例如使用框架开发时,我们都是通过配置文件进行对象关系组合映射等功能,而通过注解我们可以完全代替配置文件的编写。</p> | |
<p> </p> | |
<p> 二,Annotation的作用:</p> | |
<blockquote dir="ltr"> | |
<p>编写文档:通过代码里标识的元数据生成文档。</p> | |
<p>代码分析:通过代码里标识的元数据对代码进行分析。</p> | |
<p>编译检查:通过代码里标识的元数据让编译器能实现基本的编译检查。 </p> | |
</blockquote> | |
<p> </p> | |
<p> </p> | |
<p> 三,JDK内置的几个常用注解:</p> | |
<p> 1,@Override:此注解能够实现编译时检查,当某方法前边添加此注解时,表示此方法为重写父类中的方法。如果此方法不是父类的方法,例如我们本来想重写toString呢,却写成了tostring,则编译无法通过,会提示错误。</p> | |
<p> </p> | |
<p> 2,@Deprecated:此注解是对不应该,或者将要淘汰的方法进行标识,当编程人员使用时就会给予提示。这个功能在一些基础jar包,规范,框架等的中我们经常可以看到,还保留这些方法是为了兼容前边的一些版本,有一过度的阶段。看下边的这种效果应该都见过:</p> | |
<p> </p> | |
<p align="center"><img src="http://img.blog.csdn.net/20140327220627250?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1amlhaGFuNjI5NjI5/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" /></p> | |
<div align="left"> </div> | |
<p> </p> | |
<p> </p> | |
<p> 3,@SuppressWanings:此注解表示去除一些警告,但是里边需要我们制定参数,我们来看一下一些常用的参数:</p> | |
<div> | |
<p> </p> | |
<p> </p> | |
<p> </p> | |
<p> </p> | |
| |
<table border="1" cellspacing="0" cellpadding="0"> | |
<tbody> | |
<tr> | |
<td>参数名称 </td> | |
<td> | |
<p>参数解释</p> | |
</td> | |
</tr> | |
<tr> | |
<td> | |
<p>Unused</p> | |
</td> | |
<td> | |
<p>没有被访问过的元素,去除警告</p> | |
</td> | |
</tr> | |
<tr> | |
<td> | |
<p>Unchecked</p> | |
</td> | |
<td> | |
<p>执行了未检查的转换时的警告,例如当使用集合时没有用泛型来指定集合保存的类型</p> | |
</td> | |
</tr> | |
<tr> | |
<td> | |
<p>Fallthrough</p> | |
</td> | |
<td> | |
<p>当Switch程序块直接通往下一种情况二没有Break时的警告</p> | |
</td> | |
</tr> | |
<tr> | |
<td> | |
<p>Path</p> | |
</td> | |
<td> | |
<p>在类路径,源文件路径等中有不存在的路径时的警告</p> | |
</td> | |
</tr> | |
<tr> | |
<td> | |
<p>Serial</p> | |
</td> | |
<td> | |
<p>当在可序列化的类上缺少serialVersionUID定义时的警告</p> | |
</td> | |
</tr> | |
<tr> | |
<td> | |
<p>Finally</p> | |
</td> | |
<td> | |
<p>任何finally子句不能正常完成时的警告</p> | |
</td> | |
</tr> | |
<tr> | |
<td> | |
<p>All</p> | |
</td> | |
<td> | |
<p>关于上边所有情况的警告</p> | |
</td> | |
</tr> | |
</tbody> | |
</table> | |
</div> | |
<p> </p> | |
<p> 4, 当然我们也可以通过@interface进行自定义注解的定义,我们可以像@SuppressWanings一样向里边添加参数,利用@Target注解来指定其使用范围;@Documented表示此注解是否文档化,就是当我们生成文档时,是否生成进去;@Inherited标注继承,控制此注释是否会影响到子类等等。看一下自定注解的简单例子:</p> | |
<blockquote dir="ltr"> | |
<p>@Target({ElementType.METHOD,ElementType.CONSTRUCTOR})</p> | |
<p>@Documented</p> | |
<p>@Inherited</p> | |
<p>public@interfaceNewAnnotation {</p> | |
<p>String value();//在写注解的时候value参数中value=可以省略,其它参数名不能省</p> | |
<p>}</p> | |
</blockquote> | |
<p> </p> | |
<p> </p> | |
<p> 也就是说后边这几个注解是用来给注解做注解的,也就是注解的注解。当然了这些JDK为我们提供的一些常见的注解。而在实际开发中我们都是通过对类,对方法添加注解来代替配置文件的编程,从而从开发效率上大大提高了。</p> | |
<p> </p> | |
<p> 最后看一下通过注解开发和配置文件开发的对比吧:</p> | |
<div> | |
<table border="1" cellspacing="0" cellpadding="0"> | |
<tbody> | |
<tr> | |
<td> </td> | |
<td> | |
<p>配置文件的开发</p> | |
</td> | |
<td> | |
<p>注解方式开发</p> | |
</td> | |
</tr> | |
<tr> | |
<td> | |
<p>优点</p> | |
</td> | |
<td> | |
<p>1,遵循OCP开发原则,修改配置文件即可进行功能扩展</p> | |
| |
<p>2,集中管理对象和对象之间的组合关系,易于阅读</p> | |
</td> | |
<td> | |
<p>1,开发速度快</p> | |
| |
<p>2,编译期间容易发现错误的出处</p> | |
</td> | |
</tr> | |
<tr> | |
<td> | |
<p>缺点</p> | |
</td> | |
<td> | |
<p>1,开发速度相对较慢;</p> | |
| |
<p>2,编译时很难检查出错误,运行中的错误很难定位,调试难度较大。</p> | |
</td> | |
<td> | |
<p>1,管理分散,基本每个类上都有;</p> | |
| |
<p>2,扩展功能时,没有遵循OCP开发原则。</p> | |
</td> | |
</tr> | |
<tr> | |
<td> | |
<p>何时选择</p> | |
</td> | |
<td> | |
<p>如果客户需求进行发生变化,那么采用配置文件的方式会好一些。有利于扩展。</p> | |
</td> | |
<td> | |
<p>如果客户需求不会频繁发生变化。那么使用注解非常好,开发效率快</p> | |
</td> | |
</tr> | |
</tbody> | |
</table> | |
</div> | |
<p> </p> | |
<p> 总而言之,注解开发是当今的一个开发趋势,因为它的开发效率高,谁都想着在最短的时间内创造最大的价值。但是使用还需慎重考虑,根据实际情况进行选择。这里简单介绍了注解的基础,下边主要将在使用框架开发中,如何利用注解帮助我们提高效率</p> |
Annotation(一)——注解开发介绍的更多相关文章
- Java基础笔记 – Annotation注解的介绍和使用 自定义注解
Java基础笔记 – Annotation注解的介绍和使用 自定义注解 本文由arthinking发表于5年前 | Java基础 | 评论数 7 | 被围观 25,969 views+ 1.Anno ...
- 注解【介绍、基本Annotation、元Anntation、自定义注解、注入基本信息、对象】
什么是注解? 注解:Annotation-. 注解其实就是代码中的特殊标记,这些标记可以在编译.类加载.运行时被读取,并执行相对应的处理. 为什么我们需要用到注解? 传统的方式,我们是通过配置文件(x ...
- Annotation(四)——Struts2注解开发
Hibernate和Spring框架的开发前边总结了,这次看一下流行的MVC流程框架Struts2的注解开发吧.Struts2主要解决了从JSP到Action上的流程管理,如何进行Uri和action ...
- Annotation(三)——Spring注解开发
Spring框架的核心功能IoC(Inversion of Control),也就是通过Spring容器进行对象的管理,以及对象之间组合关系的映射.通常情况下我们会在xml配置文件中进行action, ...
- SpringMVC的注解开发入门
1.Spring MVC框架简介 支持REST风格的URL 添加更多注解,可完全注解驱动 引入HTTP输入输出转换器(HttpMessageConverter) 和数据转换.格式化.验证框架无缝集成 ...
- Hibernate注解开发详解
*****************关于注解的简单介绍 详细介绍请点击这里注解详细教程 package com.tomowork.pojo; import org.hibernate.annotatio ...
- 功能:Java注解的介绍和反射使用
功能:Java注解的介绍和反射使用 一.注解 1.注解介绍 java注解(Annotation),又称为java标注,是jdk5.0引入的一种机制. Java 语言中的类.方法.变量.参数和包等都可以 ...
- Java Annotation自定义注解详解
在开发过程中总能用到注解,但是从来没有自己定义过注解.最近赋闲在家,研究整理了一番,力求知其然知其所以然. 本文会尝试描述什么是注解,以及通过一个Demo来说明如何在程序中自定义注解.Demo没有实际 ...
- Java自定义注解开发
一.背景 最近在自己搞一个项目时,遇到可需要开发自定义注解的需求,对于没有怎么关注这些java新特性的来说,比较尴尬,索性就拿出一些时间,来进行研究下自定义注解开发的步骤以及使用方式.今天在这里记下, ...
随机推荐
- (转)命令行下,用 xcodebuild 生成ipa文件,通过 itms-services 协议安装
准备工作:已经设置好,xcode中的证书,证书必须是企业级证书,才能通过 itms-services 协议安装 Step 1: 把以下代码保存到一个web目录中,命名为 “auto.plist”,注 ...
- ios开发中各种版本、设备的区分
设备类型的区分-iphone ,ipad-itouch..... 可以从 UIDevice 的属性 model 得到在现在执行的环境.例子如下: [cpp] view plaincopyprint? ...
- hdu 4940 Destroy Transportation system(水过)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4940 Destroy Transportation system Time Limit: 2000/1 ...
- 六、Solr高亮与Field权重
Solr高亮 原理 做搜索时,高亮是很常见的需求,那么Solr肯定也为高亮提供了支持.先解释下Solr高亮的原理,在我们设置了需要高亮显示的Field之后,查询得到的返回结果会多出来下面的内容: &q ...
- paip.提升用户体验---c++ qt 取消gcc编译的警告信息.txt
paip.提升用户体验---c++ qt 取消gcc编译的警告信息.txt 作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http:// ...
- Qt使用AES加密算法对字符串进行加密
因工作需要,需要对字符串进行加密处理,在网上找了很长时间,终于找到了一个可以使用的aes加密算法.其源代码采用c++编写而成,但其头文件引用windows.h,经过修改部分代码,将#inc ...
- 大数据笔记09:大数据之Hadoop的HDFS使用
1. HDFS使用: HDFS内部中提供了Shell接口,所以我们可以以命令行的形式操作HDFS
- javascript 冒泡和事件源 形成的事件委托
冒泡:即使通过子级元素的事件来触发父级的事件,通过阻止冒泡可以防止冒泡发生. 事件源:首先这个东西是有兼容行问题的,当然解决也很简单. 两者结合使用,形成的事件委托有两个优势: 1.减少性能消耗: 2 ...
- 从客户端检测到有潜在危险的Request.Form值
1.带有html标记内容提交(使用web编辑器): js: <script type="text/javascript"> //简单模式 var editor; Kin ...
- ArcGIS Server 9.3 安装(win7).
概述: 安装的过程还不算复杂,但是有个地方需要注意:就是防火墙.需要将 "本机的防火墙" 关掉, 并将 "杀毒软件关闭"(360和avira都会乱来,搞得我安了 ...