能不能把注解@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 不支持注解继承。 所以这不是开箱即用的。
我想您可以在抽象类中实现该方法,然后在子类中覆盖它。 如果在父类中注册 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
最有用的评论
Java 不支持注解继承
如果你需要抽象方法
你的代码可以是这样的: