子クラスが拡張する抽象クラスがあります。私の抽象クラスには @Activate メソッドがあり、子クラスにもあります。OSGi がサービスを作成するとき、子クラスの activate メソッドを呼び出しますが、抽象クラスの activate メソッドは呼び出しません。子クラスで親の activate メソッドを手動で呼び出すのではなく、抽象クラスの activate を強制的に 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!");
}
}
上記のコードの結果は、"Hello World!" ではなく "World!" になります。
最初は、子のアクティブ化メソッド名が同じ名前の抽象アクティブ化メソッドを上書きしているのではないかと考えていました。抽象クラスの activate メソッドに一意の名前を付けても、結果は同じです。OSGi に抽象クラスの activate メソッドを呼び出させる方法はありますか?