private static EventComposite findAnnotatedMethods(Object listenerClass, Set<EventSubscriber> subscriberMethods,
CompositeSubscription compositeSubscription) {
for (Method method : listenerClass.getClass().getDeclaredMethods()) {
if (method.isBridge()) {
continue;
}
if (method.isAnnotationPresent(EventSubscribe.class)) {
Class<?>[] parameterTypes = method.getParameterTypes();
if (parameterTypes.length != 1) {
throw new IllegalArgumentException("Method " + method + " has @Subscribe annotation but requires " + parameterTypes
.length + " arguments. Methods must require a single argument.");
}
Class<?> parameterClazz = parameterTypes[0];
if ((method.getModifiers() & Modifier.PUBLIC) == 0) {
throw new IllegalArgumentException("Method " + method + " has @EventSubscribe annotation on " + parameterClazz + " " +
"but is not 'public'.");
}
EventSubscribe annotation = method.getAnnotation(EventSubscribe.class);
EventThread thread = annotation.thread();
EventSubscriber subscriberEvent = new EventSubscriber(listenerClass, method, thread);
if (!subscriberMethods.contains(subscriberEvent)) {
subscriberMethods.add(subscriberEvent);
compositeSubscription.add(subscriberEvent.getSubscription());
}
}
}
return new EventComposite(compositeSubscription, listenerClass, subscriberMethods);
}
EventFind.java 文件源码
java
阅读 25
收藏 0
点赞 0
评论 0
项目:AndroidBasicLibs
作者:
评论列表
文章目录