自定义注解的简单实现例子,附上代码和测试结果图
2016-09-25 23:16
666 查看
看了注解,然后又看了简单的注解的例子,自己还是亲自动手,操作一下代码,来的印象深刻些。
一下是一个简单的例子:代码注释很详细了。
以上是代码的例子,因为我的测试,都是把代码放在一个文件里面搞的测试,省去了建很多个文件的麻烦,也是为了测试的简单。然后就可以解释为什么有些给权限比如public。。。的省略了。可以直接拷贝出去放在一个文件里面就直接运行了,对于复制粘贴党来说。多安逸啊。
下面上测试的运行结果图。
上面是简单的概览式的总结。
关于Java反射的理解和例子的以及HashMap的源码的理解的链接如下:(有时间真的看看,不然怎么进阶呢。)
(链接1)注意看字:这个只是开始了解反射可以干嘛,然后你继续挨着看几篇就可以看明白反射了。呀库锁库哟!
(链接2)注意:这个是讲述1.7的Java HashMap的原理,这个真的还是了解下比较好。当然我也是连着总结了好几篇,不介意的,挨个都翻阅一下还是很有收获的。
一下是一个简单的例子:代码注释很详细了。
package com.xxx.model.configcenter; import java.lang.annotation.*; import java.lang.reflect.Method; /** * 简单注解(1):标注在方法上 */ @Retention(RetentionPolicy.RUNTIME) @Documented @Target(ElementType.METHOD) @interface Name { String aa(); } /** * 简单注解(2):标注在类上 */ @Target(ElementType.TYPE) @Documented @Retention(RetentionPolicy.RUNTIME) @interface Description { String value();//属性 } @Description(value = "此注解标注在类上,这是一个学生类") class Student { @Name(aa = "此注解标注在方法是上,这是一个方法") public void say() { System.out.println("aaa"); } @Name(aa = "此注解标注在方法是上,说明这个学生来源") public void des() { System.out.println("大师兄。"); } } /** * 测试注解的用法 * <p> * Created by lxk on 2016/9/25 */ class TestAtInterface { public static void main(String[] args) { //调用注解解析器 parseAtInterface(); } /** * 注解解析器 */ private static void parseAtInterface() { Class studentClass;//学生类即本文件内的Student类 try { //这个是Java反射的简单用法。我下文会附上Java反射的相关目录,只要肯看完,Java反射绝对可以了解 //这个反射在框架里面用的还是蛮多的,很有必要知道,就像hashmap的源码有必要了解一下一样 studentClass = Class.forName("com.xxx.model.configcenter.Student");//会异常 if (studentClass.isAnnotationPresent(Description.class)) {//如果该注解存在,present是存在不是parent Description description = (Description) studentClass.getAnnotation(Description.class); System.out.println(description.value()); } Method[] methods = studentClass.getMethods(); System.out.println(methods.length); for (Method method : methods) { //下一句代码是看看这个类一共有多少方法,每个类都继承object类,当然包含父类的一些方法 //想看看的话可以打开,为了测试效果,我注释了。 //System.out.println(method.getName()); if (method.isAnnotationPresent(Name.class)) {//如果该注解存在 Name name = (Name) method.getAnnotation(Name.class); System.out.println(name.aa()); } } } catch (ClassNotFoundException e) { e.printStackTrace();//实际开发里面的log可不能这么处理 } } }
以上是代码的例子,因为我的测试,都是把代码放在一个文件里面搞的测试,省去了建很多个文件的麻烦,也是为了测试的简单。然后就可以解释为什么有些给权限比如public。。。的省略了。可以直接拷贝出去放在一个文件里面就直接运行了,对于复制粘贴党来说。多安逸啊。
下面上测试的运行结果图。
* 自定义注解 * 一个自定义注解必须有 @Target 说明这个注解标注在哪个部位 @Retention 说明注解的作用范围 * @interface 说明是当前的文件或者说是类是一个注解类 * 注解类中可以有属性 比如:String value();还可以有其他的,不止一个。可以多个或者一个都没有 * 注解解析器 用来解析标注在类上的注解
上面是简单的概览式的总结。
关于Java反射的理解和例子的以及HashMap的源码的理解的链接如下:(有时间真的看看,不然怎么进阶呢。)
(链接1)注意看字:这个只是开始了解反射可以干嘛,然后你继续挨着看几篇就可以看明白反射了。呀库锁库哟!
(链接2)注意:这个是讲述1.7的Java HashMap的原理,这个真的还是了解下比较好。当然我也是连着总结了好几篇,不介意的,挨个都翻阅一下还是很有收获的。
相关文章推荐
- java自定义 注解 annotation、标签库tag、监听listener、junit简单测试代码
- 使用纯代码自定义UItableviewcell实现一个简单的微博界面布局
- 整合Spring MVC,mybatis,hibernate,freemarker框架实现的自定义注解Validator验证机制实现对敏感词过滤的代码分享
- ios开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局
- JS实现自定义简单网页软键盘效果代码
- iOS开发之UI基础--纯代码自定义UItableviewcell实现一个简单的微博界面布局
- 无需太多的代码利用超链接即可实现简单自定义漂亮复选框
- ios开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局
- iOS 使用纯代码自定义UITableViewCell实现一个简单的微博界面布局
- 自定义实现InputFormat、OutputFormat、输出到多个文件目录中去、hadoop1.x api写单词计数的例子、运行时接收命令行参数,代码例子
- ios开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局
- ios开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局
- 整合Spring MVC,mybatis,hibernate,freemarker框架实现的自定义注解Validator验证机制实现对敏感词过滤的代码分享
- C语言字符串库函数的实现也是笔试题常考的题目,以下代码没有严格测试,只是简单的实现:
- ice最简单实现 附上ruby、C++ 客户端代码
- 黑马程序员_实现带有构造函数的枚举代码简单例子
- jquery简单瀑布流实现原理及ie8下测试代码
- ios开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局
- os开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局
- 使用纯代码自定义UItableviewcell实现一个简单的微博界面布局