Java 注解的概念与种类

  一,什么是注解

  注解和XML文件都是常用的,对web项目进行配置性描述的方式。

  举个最简单的例子,对于一个Servlet,比如LoginServlet,采用如下方式:

  @WebServlet(urlPatterns=/Login)

  public class LoginServlet extends HttpServlet {}

  用了上面的@WebServlet注解后,无需在web.xml再进行LoginServlet相关的 配置,即可通过http://localhost:8080/项目名/Login访问到LoginServlet。

  由此可见,注解有点类似于xml配置文件,可以添加一些信息,但是又不影响Java类正常运行。注解其实就是为我们的项目提供纯Java代码提供不了的信息的。

  二,注解的优势

  那么即然都有xml配置文件这样的技术,为啥还要注解呢,感觉在干净的Java代码中添加@xxx后显得不是那么舒爽了呢。

  好的,我们来对比下注解和XML,还是以LoginServlet的使用为例:

  注解的话,我们需要在LoginServlet类添加:

  @WebServlet(urlPatterns=/Login)

  XML配置文件的话,我们需要在web.xml中添加:

  servlet

  servlet-nameLoginServlet/servlet-name

  servlet-classLoginServlet/servlet-class

  /servlet

  servlet-mapping

  servlet-nameLoginServlet/servlet-name

  url-pattern/Login/url-pattern

  /servlet-mapping

  毫无疑问,从代码量上讲注解好像占了些优势,从打开页面数上,注解只需要关注LoginServlet一个类的代码,XML方式在编辑完LoginServlet类之后还要去修改XML文件。

  这就是注解的优势哦,因为它本身就应用在类、方法、属性等元素上,所以不用再进一步描述关联元素。而且由于注解后面紧跟被注解元素,所以看起来也是一目了然,哪怕没接触过这个业务逻辑,也能注意到或者很快的去了解到。

  三,注解的种类

  Java中的注解分两类内置注解和自定义注解,很简单,就像JDK自带的类和我们的自定义类一样的道理。

  然后内置注解又分两类,一类是定义在java.lang中的常用注解,第二类是新建自定义注解使会用到的注解。其实第二类也是跟自定义注解相关的,后面会单独拿出一篇来讲自定义注解。现在重点说说常用的内置注解:

  1,@Override,该注解用来修饰方法,表示该方法覆盖父类方法。当然如果没有覆盖,就会报错。

  2,@Deprecated,使用该注解修饰的元素,会有警告信息。自定义类时对一些属性或方法采用该注解可以起到提示作用,因为用的时候代码会有道删除线。请看下图,是不是很熟悉。

  3,@SuppressWarnings,关闭编译器警告,如果觉得警告烦人,就用它吧。

  

Java 注解的概念与种类的更多相关文章

  1. Java注解基础概念总结

    注解的概念 注解(Annotation),也叫元数据(Metadata),是Java5的新特性,JDK5引入了Metadata很容易的就能够调用Annotations.注解与类.接口.枚举在同一个层次 ...

  2. java注解的概念理解

    1. 注解(标注)概念:从字面意思理解是对被标注的对象(类,接口,枚举,注解类,方法,参数)的一个标记,有这个标记有什么用呢?就像学习中“划重点”的方式一样,被标记的对象肯定是特殊需要特别关照的对象, ...

  3. 框架基础——全面解析Java注解

    为什么学习注解? 学习注解有什么好处? 学完能做什么? 答:1. 能够读懂别人写的代码,特别是框架相关的代码: 2. 让编程更加简洁,代码更加清晰: 3. 让别人高看一眼. spring.mybati ...

  4. 转!数据库连接池概念、种类、配置(DBCP\C3P0\JndI与Tomact配置连接池)

    数据库连接池概念.种类.配置(DBCP\C3P0\JndI与Tomact配置连接池) 一.DBCP 连接:DBCP 连接池是 Apache 软件基金组织下的一个开源连接池实现. 需要的 java 包c ...

  5. Java注解教程:自定义注解示例,利用反射进行解析

    Java注解能够提供代码的相关信息,同时对于所注解的代码结构又没有直接影响.在这篇教程中,我们将学习Java注解,如何编写自定义注解,注解的使用,以及如何使用反射解析注解. 注解是Java 1.5引入 ...

  6. 黑马程序员:Java基础总结----java注解

    黑马程序员:Java基础总结 java注解   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! java注解 lang包中的基本注解 @SuppressWarnings ...

  7. java注解(基础)

    一.认识注解 1.注解的定义: java提供了一种原程序中的元素关联任何信息和元数据的途径和方法. 2.学习注解的目的: (1)能够读懂别人写的代码,特别是框架相关的代码(框架中使用注解是非常方便的) ...

  8. Java注解(3)-注解处理器(编译期|RetentionPolicy.SOURCE)

    注解的处理除了可以在运行时通过反射机制处理外,还可以在编译期进行处理.在编译期处理注解时,会处理到不再产生新的源文件为止,之后再对所有源文件进行编译. Java5中提供了apt工具来进行编译期的注解处 ...

  9. Java注解(Annotation):请不要小看我!

    Java注解是一系列元数据,它提供数据用来解释程序代码,但是注解并非是所解释的代码本身的一部分.注解对于代码的运行效果没有直接影响. 网络上对注解的解释过于严肃.刻板,这并不是我喜欢的风格.尽管这样的 ...

随机推荐

  1. PHP自定义函数返回多个值

    PHP自定义函数只允许用return语句返回一个值,当return执行以后,整个函数的运行就会终止. 有时要求函数返回多个值时,用return是不可以把值一个接一个地输出的. return语句可以返回 ...

  2. Log4net 乱码问题解决

    在将log4net输出到UdpAppender会出现乱码问题,当然,丢到第三方日志分析工具glaylog下,也出现中文乱码. <?xml version="1.0"?> ...

  3. c++中的构造(包括移动),赋值(包括移动),析构详解

    这五种操作:构造(包括移动),赋值(包括移动),析构其实就是定义了对一个对象进行构造,赋值,析构时的行为.理解这些行为并不复杂,复杂的是理解在继承下这些行为的表现.需要注意的是他们并不会被继承(传统意 ...

  4. 数据结构线性表的动态分配顺序存储结构算法c语言具体实现和算法时间复杂度分析

    #include<stdio.h>#include<stdlib.h>//线性表的动态分配顺序存储结构#define LIST_INIT_SIZE 100//线性表存储空间的初 ...

  5. Summary: Class Variable vs. Instance Variable && Class Method

    这里列举的是一些我平时碰到的一些Java Grammar,日积月累. Class Variable vs Instance Variable: Instance variables Instance ...

  6. linux rz sz

    对于经常使用Linux系统的人员来说,少不了将本地的文件上传到服务器或者从服务器上下载文件到本地,rz / sz命令很方便的帮我们实现了这个功能,但是很多Linux系统初始并没有这两个命令.今天,我们 ...

  7. python 用类方法和静态方法实现是追加写文件内容,和读指定行号的内容

    用类方法和静态方法实现:一个是追加写文件一行内容,一个是读指定行号的内容   #coding=utf-8   class handle_file(object):     def __init__(s ...

  8. Linux基础命令---resizefs

    resize2fs 调整ext2\ext3\ext4文件系统的大小,它可以放大或者缩小没有挂载的文件系统的大小.如果文件系统已经挂载,它可以扩大文件系统的大小,前提是内核支持在线调整大小. size参 ...

  9. SpringBoot集成Socket服务后打包(war包)启动时如何启动Socket服务(web应用外部tomcat启动)

      1.首先知道SpringBoot打包为jar和war包是不一样的(只讨论SpringBoot环境下web应用打包)     1.1.jar和war包的打开方式不一样,虽然都依赖java环境,但是j ...

  10. 教你如何构建异步服务器和客户端的 Kotlin 框架 Ktor

    Ktor 是一个使用 Kotlin 以最小的成本快速创建 Web 应用程序的框架. Ktor 是一个用于在连接系统(connected systems)中构建异步服务器和客户端的 Kotlin 框架. ...