揭开Annotation的面纱
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 类注解
*
* @author leizhimin 2009-12-18 14:15:46
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface MyAnnotation4Class {
public String msg();
}
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 方法注解
*
* @author leizhimin 2009-12-18 14:16:05
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface MyAnnotation4Method {
public String msg1();
public String msg2();
}
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 字段注解
*
* @author leizhimin 2009-12-18 15:23:12
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface MyAnnotation4Field {
public String commont();
public boolean request();
}
/**
* 一个普通的Java类
*/
@MyAnnotation4Class(msg = "测试类注解信息")
class TestClass {
@MyAnnotation4Field(commont = "成员变量的注解信息", request = true)
private String testfield;
@MyAnnotation4Method(msg1 = "测试方法注解信息1", msg2 = "测试方法注解信息2")
public void testMethod() {
System.out.println("Hello World!");
}
}
import java.lang.reflect.Field;
import java.lang.reflect.Method;
/**
* 测试类
*
* @author leizhimin 2009-12-18 14:13:02
*/
public class TestOptAnnotation {
public static void main(String[] args) throws NoSuchMethodException, NoSuchFieldException {
TestClass t = new TestClass();
System.out.println("-----------MyAnnotation4Class注解信息---------");
MyAnnotation4Class an4clazz = t.getClass().getAnnotation(MyAnnotation4Class.class);
System.out.println(an4clazz.msg());
System.out.println("-----------MyAnnotation4Method注解信息---------");
Method method = t.getClass().getMethod("testMethod", new Class[0]);
MyAnnotation4Method an4method = method.getAnnotation(MyAnnotation4Method.class);
System.out.println(an4method.msg1());
System.out.println(an4method.msg2());
System.out.println("-----------MyAnnotation4Field注解信息---------");
Field field = t.getClass().getDeclaredField("testfield");
MyAnnotation4Field an4field = field.getAnnotation(MyAnnotation4Field.class);
System.out.println(an4field.commont());
System.out.println(an4field.request());
}
}
测试类注解信息
-----------MyAnnotation4Method注解信息---------
测试方法注解信息1
测试方法注解信息2
-----------MyAnnotation4Field注解信息---------
成员变量的注解信息
true
Process finished with exit code 0
揭开Annotation的面纱相关推荐
- python可以干什么-Python可以用来做什么 为你揭开python神秘面纱
Python可以用来做什么 为你揭开python神秘面纱 时间:2018-01-24 来源:解读Python 最近,编程界又一语言可谓是着实又火了一把,什么语言呢?python,python为 ...
- 偷梁换柱——揭开多态的面纱
偷梁换柱--揭开多态的面纱 --从C++到.NET 声明:本文的前半部分纯粹是为初学者写的,如果你对C++对象模型稍有了解, ...
- Android开源框架Afinal第一篇——揭开圣女的面纱
Android开源框架Afinal第一篇--揭开圣女的面纱 分类: Android开源框架哪点事2013-09-02 14:25 260人阅读 评论(0) 收藏 举报 Afinal 这是Afinal在 ...
- python可以给你干什么-Python可以用来做什么 为你揭开python神秘面纱
Python可以用来做什么 为你揭开python神秘面纱 时间:2018-01-24 来源:解读Python 最近,编程界又一语言可谓是着实又火了一把,什么语言呢?python,python为 ...
- 微信支付官方揭开刷脸支付神秘面纱
无利不起早这句话经久不衰,想要提高用户的站粘性,就必须在服务或附加值上面花点心思.微信青蛙Pro就是二者之间的建设桥梁,它将给予消费者一种全新的支付体验.今年,刷脸支付大面积普及,各种消息不胫而走,好 ...
- Machine Learning -- 揭开机器学习的面纱
揭开机器学习的面纱 1. 何为机器学习? 2. 机器学习的前世今生 3. 机器学习的常用算法 4.机器学习的分类 4.1 按照学习方式类 4.1.1 监督学习 4.1.2 无监督学习 4.1.3 强化 ...
- 基于wayland的linux桌面,揭开Wayland的面纱 - iTech - 博客园
揭开Wayland的面纱 - iTech - 博客园 (2011-11-30 22:38:22) 标签: 锦衣夜行 娱乐 如果在两年前,按照那篇<Wayland:Linux的新X Server& ...
- 柔宇六周年庆2000人齐聚,揭开“柔性星球”面纱
深圳2018年8月13日电 /美通社/ -- 2018年8月1日,柔宇迎来第6个生日.6年前的这一天,3个人.3个小花篮组成了最简单的开业庆典,6年后的这一天,柔宇已经汇聚了来自15个国家和地区的20 ...
- 冰河浅析 - 揭开***的神秘面纱
一.基础篇(揭开***的神秘面纱) 无论大家把***看得多神秘,也无论***能实现多么强大的功能,***,其实质只是一个网络客户/服务程序.那么,就让我们从网络客户/服务程序的编写开始. 1.基本概念 ...
最新文章
- 基于MVC4+EasyUI的Web开发框架经验总结(8)--实现Office文档的预览
- 含类定义的完整python程序_Python——变量,运算,条件,循环
- 第四范式携AIOS平台亮相2021年世界互联网领先科技成果征集活动
- NodeJs实现自定义分享功能,获取微信授权+用户信息
- 红黑树实现——STL中的map
- quartz 时间配置规则
- fatal: could not read Username for 'https://github.com': No such file or directory
- python画简单图-python绘制简单彩虹图
- 64位Ubuntu14.04搭建ADT开发环境
- resourcehacker
- Zynq7000(XC7Z045FF900)硬件开发完整指南
- 辅导班师资力量介绍!
- git commit 命令详解
- 用晨曦记账本记账,设置背景、文字颜色
- 知识图谱-生物信息学-医学顶刊论文(Bioinformatics-2021)-SumGNN:通过有效的KG聚集进行多类型DDI预测
- 2020牛客暑期多校训练营(第八场)	Enigmatic Partition
- 编码 人的语言与机器语言转换
- 设计用于汽车和车身SPC58NH92C3RMI0X\SPC560B50L1B4E0X微控制器
- 模式匹配——BF算法
- 【Echarts图例点击事件】自定义Echarts图例legend点击事件(已解决)