@@ -38,7 +38,7 @@ private TriggerContext(){
3838 * @param handler 触发订阅
3939 */
4040 public void addTrigger (TriggerHandler handler ){
41- Class <? extends Trigger > clazz = getTriggerClass (handler );
41+ Class <? extends Trigger > clazz = getTriggerClass (handler . getClass () );
4242 List <TriggerHandler > triggerList = this .triggers .get (clazz );
4343 if (triggerList ==null ){
4444 triggerList = new CopyOnWriteArrayList <>();
@@ -53,9 +53,14 @@ public void addTrigger(TriggerHandler handler){
5353 * @param handler 触发订阅
5454 * @return Trigger类型
5555 */
56- private Class <? extends Trigger > getTriggerClass (TriggerHandler handler ){
57- ParameterizedType parameterizedType = (ParameterizedType ) handler .getClass ().getGenericInterfaces ()[0 ];
58- return (Class <? extends Trigger >) parameterizedType .getActualTypeArguments ()[0 ];
56+ private Class <? extends Trigger > getTriggerClass (Class <?> handler ){
57+ for (Class <?> superInterface : handler .getInterfaces ()) {
58+ if (superInterface .equals (TriggerHandler .class )) {
59+ ParameterizedType parameterizedType = (ParameterizedType ) handler .getGenericInterfaces ()[0 ];
60+ return (Class <? extends Trigger >) parameterizedType .getActualTypeArguments ()[0 ];
61+ }
62+ }
63+ return getTriggerClass (handler .getSuperclass ());
5964 }
6065
6166
@@ -67,7 +72,7 @@ public void trigger(Trigger trigger){
6772 Class <? extends Trigger > clazz = trigger .getClass ();
6873 List <TriggerHandler > triggerHandlerList = triggers .get (clazz );
6974 for (TriggerHandler handler :triggerHandlerList ){
70- Class <? extends Trigger > triggerClass = getTriggerClass (handler );
75+ Class <? extends Trigger > triggerClass = getTriggerClass (handler . getClass () );
7176 if (triggerClass .equals (clazz )) {
7277 try {
7378 boolean canTrigger = handler .preTrigger (trigger );
0 commit comments