Annotation实现
在java中一共提供了三个annotation:@Override,@Deprecated,@SupperessWarnings
代码范例:使用Annotation
package com.hbsi.proxy;
@SuppressWarnings("unused")
@Deprecated
public class RealFood implements Food{
@SuppressWarnings("unused")
@Deprecated
@Override
public void eat() {
int x;
System.out.println("吃饭 ,,,,,RealFood");
}
}
如果想要操作Annotation,那么首先应该可以去的全部的Annotation,如果要想取得Annotation则可以使用Class类中的方法
      • public Annotation[] getAnnotations​() 取得全部的Annotation
代码示例:去的上面的类上的Annotation
import java.lang.annotation.Annotation;
import com.hbsi.proxy.RealFood;
public class TestDemo {
public static void main(String[] args) {
Class<?> cls = RealFood.class;
Annotation[] annotations = cls.getAnnotations();
for (int i = 0; i < annotations.length; i++) {
System.out.println(annotations[i]);
}
}
}
代码执行结果:
@java.lang.Deprecated(forRemoval=false, since="")
奇怪的是这个类上的 @SuppressWarnings("unused")注解并没有输出,因为是由Annotation的使用策略决定的,只有@Deprecated才一直支持到运行时使用。其他只是在编译时使用
如果想知道Annotation 的级别,比如是运行时一直使用,还是只在编译时使用,则可以考虑这个类:
其枚举如下
CLASS
注释将由编译器记录在类文件中,但VM不需要在运行时保留。类之中
注释将由编译器记录在类文件中,并由VM在运行时保留,因此可以反射读取。运行之中
注释将被编译器丢弃。源代码之中
如上,如果现在要编写一个与程序有关的Annotation,应该使用RUNTIME范围。
 
代码范例:定义一个简单Annotation
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
//此注解在运行范围内有效
@Retention(value=RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
public String name() default "hbsi";//定义name属性
public String values();//定义values属性
}
而后就可以直接使用此注解:
 
import com.hbsi.annotation.MyAnnotation;
@MyAnnotation(name="hbsi",values="hebei")
public class RealFood implements Food{
@Override
public void eat() {
int x;
System.out.println("吃饭 ,,,,,RealFood");
}
}

再次运行上述代码中获得Annotation 的类得到的结果如下:

@com.hbsi.annotation.MyAnnotation(name="hbsi", values="hebei")
代码范例:
import java.lang.annotation.Annotation;
import com.hbsi.annotation.MyAnnotation;
import com.hbsi.proxy.RealFood;
public class TestDemo {
public static void main(String[] args) {
Class<?> cls = RealFood.class;
Annotation[] annotations = cls.getAnnotations();
for (int i = 0; i < annotations.length; i++) {
MyAnnotation annotation = cls.getAnnotation(MyAnnotation.class);
System.out.println(annotation.name());
System.out.println(annotation.values());
System.out.println(annotation.annotationType());
}
}
}

执行结果

hbsi
hebei
interface com.hbsi.annotation.MyAnnotation
从执行结果中可以看到,指定类如果配置了此注解并对注解中属性赋值了,那么是可以获得指定类中的为注解赋的值的信息的。
如果要定义有Annotation必然要有一个类专门处理Annotation数据的取得。

java--Annotation实现的更多相关文章

  1. Java Annotation概述

    @(Java)[Annotation|Java] Java Annotation概述 用途 编译器的相关信息,如用于检测错误和一些警告 编译时和部署时的处理,如一些软件用于自动生成代码之类的 运行时处 ...

  2. Java Annotation 注解

    java_notation.html div.oembedall-githubrepos { border: 1px solid #DDD; list-style-type: none; margin ...

  3. paip.Java Annotation注解的作用and 使用

    paip.Java Annotation注解的作用and 使用 作者Attilax 艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog. ...

  4. Java Annotation认知(包括框架图、详细介绍、示例说明)

    摘要 Java Annotation是JDK5.0引入的一种注释机制. 网上很多关于Java Annotation的文章,看得人眼花缭乱.Java Annotation本来很简单的,结果说的人没说清楚 ...

  5. Java Annotation原理分析(一)

    转自:http://blog.csdn.net/blueheart20/article/details/18725801 小引: 在当下的Java语言层面上,Annotation已经被应用到了语言的各 ...

  6. Java Annotation 及几个常用开源项目注解原理简析

    PDF 版: Java Annotation.pdf, PPT 版:Java Annotation.pptx, Keynote 版:Java Annotation.key 一.Annotation 示 ...

  7. Java Annotation 机制源码分析与使用

    1 Annotation 1.1 Annotation 概念及作用      1.  概念 An annotation is a form of metadata, that can be added ...

  8. Java Annotation手册

    Java Annotation手册 作者:cleverpig(作者的Blog:http://blog.matrix.org.cn/page/cleverpig) 原文:http://www.matri ...

  9. Java Annotation 必须掌握的特性

    什么是Annotation? Annotation翻译为中文即为注解,意思就是提供除了程序本身逻辑外的额外的数据信息.Annotation对于标注的代码没有直接的影响,它不可以直接与标注的代码产生交互 ...

  10. Java Annotation认知(包括框架图、详细介绍、示例说明)(转)

    本文转自:http://www.cnblogs.com/skywang12345/p/3344137.html 网上很多关于Java Annotation的文章,看得人眼花缭乱.Java Annota ...

随机推荐

  1. 百度分享实现https

    什么是百度分享,看下面两个图. 还要自己写js,css吗?那不存在的,百度已经给出了解决方案并分享了出来 http://share.baidu.com/code/advance 缺陷是不支持 http ...

  2. 改进初学者的PID-初始化

    最近看到了Brett Beauregard发表的有关PID的系列文章,感觉对于理解PID算法很有帮助,于是将系列文章翻译过来!在自我提高的过程中,也希望对同道中人有所帮助.作者Brett Beaure ...

  3. AC与AP的安装使用(未经实战,仅供参考,未完待续)

    AC:无线控制器(Wireless Access Point Controller) AP:无线访问接入点(WirelessAccessPoint) 以信锐AC为例 AC设备的管理口为MANAGE(E ...

  4. css3逐帧动画

    写css3动画的时候,我们经常用到animation来实现,默认情况下,animation是属于连贯性的ease动画.我们熟悉的animation动画有ease.ease-in.ease-out.li ...

  5. [LeetCode] 248. Strobogrammatic Number III 对称数III

    A strobogrammatic number is a number that looks the same when rotated 180 degrees (looked at upside ...

  6. [LeetCode] 341. Flatten Nested List Iterator 压平嵌套链表迭代器

    Given a nested list of integers, implement an iterator to flatten it. Each element is either an inte ...

  7. 通过ip远程控制电脑

    现在,很多人都用了不止一台电脑,而同时操作两台电脑是一件比较麻烦的事情,所以,如果能够使用一台电脑的鼠标键盘显示器,去远程控制另一台电脑,那就方便多了. 远程计算机设置 1.先确保本地计算机和远程计算 ...

  8. 如何在一个文件中写多个Vue组件(译-有删改)

    原文地址 Writing multiple Vue components in a single file 在一个文件中编写多个组件是React的模式,其中一些文件包含多个组件. 走开发过程中,有些组 ...

  9. Echarts数据可视化grid直角坐标系(xAxis、yAxis)

    mytextStyle={ color:"#333", //文字颜色 fontStyle:"normal", //italic斜体 oblique倾斜 font ...

  10. 本地yum源 、阿里yum源、163yum源的配置安装

    一.本地yum源 (我使用的7.3版本) 1..添加一个新的yum源配置文件dvd.repo(文件名字自定义) vi etc/yum.repos.d     添加新的内容: name=rhel_dvd ...