首页 / 更多教程 / guava中eventbus注解使用
guava中eventbus注解使用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了guava中eventbus注解使用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2097字,纯文字阅读大概需要3分钟。
内容图文
guava是 google 几个java核心类库的集合,包括集合、缓存、原生类型、并发、常用注解、基本字符串操作和I/O等等。学会使用该库相关api的使用,能使我们代码更简洁,更优雅,本章节我们来谈谈guava中注解的应用:
第一步:定义一个注解类,用来标示订阅:
1 @Beta 2 @Target(ElementType.METHOD) 3 @Retention(RetentionPolicy.RUNTIME) 4 public @interface SubScribe { 5 }
备注:
a)@Target:定义注解的作用目标
@Target(ElementType.TYPE) //接口、类、枚举、注解
@Target(ElementType.FIELD) //字段、枚举的常量
@Target(ElementType.METHOD) //方法
@Target(ElementType.PARAMETER) //方法参数
@Target(ElementType.CONSTRUCTOR) //构造函数
@Target(ElementType.LOCAL_VARIABLE)//局部变量
@Target(ElementType.ANNOTATION_TYPE)//注解
@Target(ElementType.PACKAGE) ///包
b)@Retention: 定义注解的保留策略
@Retention(RetentionPolicy.SOURCE) //注解仅存在于源码中,在class字节码文件中不包含
@Retention(RetentionPolicy.CLASS) // 默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得,
@Retention(RetentionPolicy.RUNTIME) // 注解会在class字节码文件中存在,在运行时可以通过反射获取到
c) @Document:说明该注解将被包含在javadoc中
第二步:定义事件event和订阅者Subscriber
1 public class Event { 2 private int massage; 3 public Event(int massage){ 4this.massage = massage; 5 } 6 7publicint getMassage(){ 8return massage; 9 } 10 }
1 public class Subscriber { 2 private int massage; 3 4 @SubScribe 5 public void listen(MyEvent event){ 6 this.massage = event.getMassage(); 7 } 8 9publicint getMassage(){ 10return massage; 11 } 12 }
第三步:自定义eventbus
1 public class EventBus { 2 @SuppressWarnings("unused") 3private Object massage; 4private Class<?> cl; 5private Object obj; 6 7publicvoid register(Object obj) { 8 cl = obj.getClass(); 9this.obj = obj; 10 } 1112publicvoid post(Object massage) { 13this.massage = massage; 14for (Method m : cl.getDeclaredMethods()) { 15 SubScribe sub = m.getAnnotation(SubScribe.class); 16if (sub != null) { 17 Class<?>[] params = m.getParameterTypes(); 18if (massage.getClass().equals(params[0])) { 19try { 20 m.invoke(obj, massage); 21 } catch (IllegalAccessException e) { 22 e.printStackTrace(); 23 } catch (IllegalArgumentException e) { 24 e.printStackTrace(); 25 } catch (InvocationTargetException e) { 26 e.printStackTrace(); 27 } 28 } 29 } 30 } 31 } 32 }
原文:http://www.cnblogs.com/huane/p/5883490.html
内容总结
以上是互联网集市为您收集整理的guava中eventbus注解使用全部内容,希望文章能够帮你解决guava中eventbus注解使用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。