@ServiceDependency
注释对方法有什么影响?
我正在尝试研究我下载的一些示例代码,并且其中有一种方法带有注释@ServiceDependency
。该方法永远不会在其他任何地方被调用。因此,我猜测@ServiceDependency
注解会使方法自动运行。该注释的真正作用是,某些类中的某些成员变量都用注释@ServiceDependency
。
class UI {
private final Map<ServiceReference, AppScreen> screens = new ConcurrentHashMap<>();
@ServiceDependency(removed = "removeScreen")
public void addScreen(ServiceReference<?> sr, AppScreen screen) {
if (tabPane != null) {
Platform.runLater(() -> {
// Do something
});
}
screens.put(sr, screen);
}
public void removeScreen(ServiceReference<?> sr) {
Platform.runLater(() -> {
AppScreen remove = screens.remove(sr);
// DO something else
});
}
}
此批注不是来自OSGi,而是来自Felix子项目“ DependencyManager”。它是帮助管理osgi服务的众多项目之一。在OSGi中,通过“声明服务”,该注释称为@Reference
。
在您的示例中,当的一个实例AppScreen
注册到OSGi注册表中时,该方法将addScreen
被调用。取消注册此实例后,将removeScreen
调用该方法。
请参阅DependencyManager的文档
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句