【发布时间】:2017-05-20 12:51:27
【问题描述】:
我有一个包含两个包的 OSGi 包:
-
com.organization.api这个包被导出了。 -
com.organization.internal这个包没有被导出。
在com.organization.api我有一个接口Foo和类AsbtractFoo
package com.organization.api;
public abstract class AbstractFoo implements Foo {
private int state;
@Override
public int getState(){
return this.state;
}
}
在com.organization.internal 我有一个类FooManager 需要改变Foo 的状态。在com.organization.internal之外的任何其他类都不能改变foo的状态的情况下如何做到这一点。
package com.organization.internal;
public class FooManager {
private ???? foo = ....
public void updateFooState(){
foo.????();
}
}
我尝试使用默认访问设置器 (void setState(int state)) 将 AbstractStatefullFoo 添加到包 com.organization.internal 并让 AbstractFoo 扩展 AbstractStatefullFoo 但问题是这种情况下其他捆绑包需要导出包 com.organization.internal .
这样的问题在 OSGi 中如何解决?
【问题讨论】: