diff --git a/kernel-d-event/event-sdk/src/main/java/cn/stylefeng/roses/kernel/event/sdk/publish/BusinessEventPublisher.java b/kernel-d-event/event-sdk/src/main/java/cn/stylefeng/roses/kernel/event/sdk/publish/BusinessEventPublisher.java index 6a32b2dd1..caa97e67e 100644 --- a/kernel-d-event/event-sdk/src/main/java/cn/stylefeng/roses/kernel/event/sdk/publish/BusinessEventPublisher.java +++ b/kernel-d-event/event-sdk/src/main/java/cn/stylefeng/roses/kernel/event/sdk/publish/BusinessEventPublisher.java @@ -67,12 +67,15 @@ public class BusinessEventPublisher { // 如果发布事件的时候,包含参数,则判断method的第一个参数是否和businessObject的class一样,不一样则不调用 else { - if (parameterClassType != null && parameterClassType.equals(businessObject.getClass())) { - try { - listenerMethod.invoke(bean, businessObject); - } catch (IllegalAccessException | InvocationTargetException e) { - log.error("方法调用失败,反射调用异常", e); - throw new ServiceException(EventExceptionEnum.ERROR_INVOKE); + if (parameterClassType != null) { + if (parameterClassType.equals(businessObject.getClass()) + || parameterClassType.isAssignableFrom(businessObject.getClass())) { + try { + listenerMethod.invoke(bean, businessObject); + } catch (IllegalAccessException | InvocationTargetException e) { + log.error("方法调用失败,反射调用异常", e); + throw new ServiceException(EventExceptionEnum.ERROR_INVOKE); + } } } }