我有一个子类扩展的抽象类。我的抽象类有一个@Activate 方法,子类也有。当 OSGi 创建我的服务时,它会调用子类的激活方法,但不会调用抽象类的激活方法。有没有办法强制 OSGi 调用抽象类的激活,而不是让子类手动调用父激活方法?
这里有一些代码可以帮助详细说明我的要求。
@Component(componentAbstract=true, inherit=true)
@Service(value=ISomeInterface)
public abstract class AbstractHello implements ISomeInterface{
@Activate
public void activate(){
System.out.print("Hello ");
}
}
@Component
@Service(Value=ISomeInterface)
public class World extends AbstractHello{
@Activate
public void activate(){
System.out.println("World!");
}
}
上面代码的结果将是“World!”,而不是“Hello World!”。
最初我认为可能子激活方法名称正在破坏同名的抽象激活方法。即使抽象类的激活方法被赋予一个唯一的名称,结果也是一样的。有没有办法让 OSGi 为我调用抽象类的激活方法?