关闭

Java提高班--注解

标签: java注解Annotation
680人阅读 评论(0) 收藏 举报
分类:

注解是一种特殊的接口,为了把注解类型和普通接口类型区分开我们在interface前面添加@符号。

注解其实就在在代码上面添加Tag,注解并不会影响程序的运行。

注解是一种配置机制。

Think in Java中是这样定义注解的:

注解(也被称为元数据)为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某个时刻非常方便的使用这些数据。

JavaSE5内置了三种注解,定义在java.lang中:

  • @Override,表示当前的方法定义将覆盖超类中的方法。
  • @Deprecated,表示它注解的元素不推荐使用了,因为它是危险的或者有了更好的实现。
  • @SuppressWarnings,关闭不当的编译器警告信息。
定义注解的时候需要一些元注解(meta-annotation),Java内置了4种元注解,元注解用于注解其他的注解。

@Target 表示该注解用于什么地方,可能的ElementType参数有:
TYPE: 类,接口(包括注解类)或enum声明
FIELD:域声明(包括enum实例)
METHOD:方法声明
PARAMETER:参数声明
CONSTRUCTOR:构造器声明
LOCAL_VARIABLE:局部变量声明
ANNOTATION_TYPE:注解类型声明
PACKAGE:包声明
@Retention 表示需要在什么级别保存该注解信息,可选的RetentionPolicy参数包括:
SOURCE:注解将被编译器丢弃
CLASS:注解在class文件中可用,但会被VM丢弃
RUNTIME:VM将在运行时也保留注解,因此可以通过反射机制读取注解的信息
@Documented 将此注解包含在Javadoc中
@Inherited 允许子类继承父类中的注解

简单的自定义注解:

package com.dusk.annoation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface UseCase {
	public int id();

	public String description() default "no description";
}
注解元素的可用类型有:

  • 所有的基本类型
  • String
  • Class
  • enum
  • Annotation
  • 以上类型的数组

操作注解:

注解其实就是类、枚举、方法、类属性上面的一个标记,只要我们能读到这个标记就可以根据自己的实际应用场景进行相应的处理。

最基础的办法是我们使用Java反射包中自带的获取注解的方法来处理。

例如:

类:

java.lang.Class.getAnnotation(Class<A>)

java.lang.Class.getDeclaredAnnotations()

方法:

java.lang.reflect.Method.getAnnotation(Class<T>)

属性:

java.lang.reflect.Field.getAnnotation(Class<T>)

当然也可以使用apt , javac等

1
0
查看评论

廊坊师范学院IT提高班,你真正了解多少?

最近在csdn博文中经常看到博友们问,什么是提高班?更有人对提高班怀有疑惑 or 不理解……     廊坊师范学院信息技术提高班到底是怎样的一个地方,你对这个地方又有怎样的认识?你对这个地方是否怀有一份好奇心呢?让这篇文章解开你心中的某些疑惑吧!     ...
  • mazhaojuan
  • mazhaojuan
  • 2012-06-19 21:42
  • 12083

提高班让我变得更好

在我还没有加入这个集体的时候我一直以为这就是一个教计算机的地方,就像我们为了一些考试通过报的班一样。当时加入提高班的原因还是因为快要考省一级了,觉得加入提高班学一点计算机然后省一级就可以过了,现在想起来自己觉得像是不小心撞了大运。    刚来到提高班的时候,几乎不知道这里是干什么...
  • wyj19950908
  • wyj19950908
  • 2016-11-12 19:05
  • 483

提高班整风带给我的思考

提高班整风带给我的思考         古有延安整风,今有提高班整顿。在一个组织为了实现一定的目标的道路上,进行一次或多次的整风是势在必然,必不可少的。      &...
  • missysm586
  • missysm586
  • 2012-03-26 22:00
  • 1067

C#知识点总结(上)

一、含义 .net/dotnet:一般指.Net Framework框架,一种平台,一种技术。 C#(sharp):一种编程语言,可以开发基于.net平台的应用。 (*)java即使一种技术又是一种编程语言。   二、.NET两种交互模式 ·C/S:客户机(Clien...
  • zhijianhuiyi
  • zhijianhuiyi
  • 2016-11-26 17:30
  • 309

【Visual C++】游戏开发笔记三十三 浅墨DirectX提高班之二 化腐朽为神奇:DirectX初始化四步曲

这篇文章里,我们将迈出精通DirectX的第一步,先了解典型Direct3D程序的书写流程,然后学习COM接口的对象的一些思想,然后按照“四步曲”的思路,系统地学习DirectX的初始化方法,且文章最后进行了相关源代码的赏析以及源代码的下载。看完这篇文章,也许你会豁然开朗,哦,原来Direct3D程...
  • true11false
  • true11false
  • 2014-07-25 22:39
  • 528

软件工程(总)

【思维导图】 【总体概括】 第一章 1.软件工程:知道计算机软件开发和维护的一门科学 2.软件危机:计算机在软件开发的过程中遇到的一系列问题 A.如何满足软件不断增长的需求? B.如何维护不断增长的已有软件? 3.生命周期:软件产品从定义开始,经过开发、使用、维护直到最后被淘汰的过程。 第二...
  • lyj4495673
  • lyj4495673
  • 2017-03-11 15:54
  • 429

【数据库】索引

索引是什么 索引是一种单独的、物理的对数据库表中一列或者多列的值进行排序的数据结构 作用相当于图书的目录 ,可以根据目录中页码快速找到所需内容  索引的利弊好处: 1.避免全表扫描,提高性能 2.唯一性索引确保每一行数据的的唯一性 3.使用分组和排序子句进行数据检索时,...
  • Francis123580
  • Francis123580
  • 2017-06-18 20:10
  • 237

【软件测试】从哪些方面对jmeter测试结果分析

这两天用jmeter测试查看结果都是查看的聚合报告和查看结果树。 文件 -打开-(之前录制好脚本的文件)在线程组上添加聚合报告和查看结果树两种监听器就好了。       通常我们认为 把最优响应时间看做90%响应时间的参照标准,最差可以接受实践看作9...
  • srk950606
  • srk950606
  • 2017-03-02 19:00
  • 891

各种考试带给我的一些收获

2012年上半年经历了各种考试,仿佛又回到了高中那个混乱的考试年代,12年三月份参加了等级考试,四月份参加了自考,五月份参加了软考,这几个考试对自己来说,都是从体育跨越到计算机专业的一个验证. 6月份顺利毕业,大学四年就这样画上了句号. 关于自考    一开始...
  • yingjiebohe
  • yingjiebohe
  • 2012-07-08 16:25
  • 1018

浅谈自考学习方法(三)

中国的教育教育的学生,考试追求满分,做事追求完美,这是大错特错的做法。         看一本书,用20﹪的精力,获得80﹪的知识,比用100﹪的精力获得满分,有着不言而喻的天壤之别,“怕累拖”定律:没有一项工作是100%的付出能...
  • jiuqiyuliang
  • jiuqiyuliang
  • 2012-03-24 16:50
  • 2373
    个人资料
    • 访问:185319次
    • 积分:2412
    • 等级:
    • 排名:第18121名
    • 原创:74篇
    • 转载:9篇
    • 译文:6篇
    • 评论:46条
    博客专栏
    最新评论