Eventbus: 我们可以订阅一个抽象方法吗

创建于 2016-08-21  ·  3评论  ·  资料来源: greenrobot/EventBus

能不能把注解@Subscribe只放在父类的抽象方法上,不放在子类的实现方法上?

例如:

abstract class Parent {  
        <strong i="8">@Subscribe</strong> 
        public abstract void sayHi(EventMessage em); 
}
class ChildA{
        public void sayHi(EventMessage em){
                 System.out.println("Hi I am ChildA");
       }
}

EventBus会对该函数进行分类并打印消息吗?

最有用的评论

Java 不支持注解继承

如果你需要抽象方法
你的代码可以是这样的:

abstract  class Parent{

<strong i="8">@Subscribe</strong> 
public void onEvent(Event event){
   doEvent(event);
}

protected abstract void doEvent(Event event);
}
class Child{
     <strong i="11">@Override</strong>
     protected void doEvent(Event event){
   // do something
 }
}

所有3条评论

据我所知Java 不支持注解继承。 所以这不是开箱即用的。

我想您可以在抽象类中实现该方法,然后在子类中覆盖它。 如果在父类中注册 EventBus,它应该调用正确的子方法。

喜欢

abstract class Parent {  
        <strong i="9">@Subscribe</strong> 
        public void sayHi(EventMessage em) {
        }
}
class ChildA{
        <strong i="12">@Override</strong>
        public void sayHi(EventMessage em){
                 System.out.println("Hi I am ChildA");
       }
}

-ut

Java 不支持注解继承

如果你需要抽象方法
你的代码可以是这样的:

abstract  class Parent{

<strong i="8">@Subscribe</strong> 
public void onEvent(Event event){
   doEvent(event);
}

protected abstract void doEvent(Event event);
}
class Child{
     <strong i="11">@Override</strong>
     protected void doEvent(Event event){
   // do something
 }
}

请参阅上面的两种解决方法。 如果我们想支持这一点,请保持开放以备将来参考。 -ut

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

timroes picture timroes  ·  9评论

liaohuyu picture liaohuyu  ·  4评论

gsteigert picture gsteigert  ·  5评论

ANewAnonymous picture ANewAnonymous  ·  4评论

bdeneuter picture bdeneuter  ·  3评论