当前位置:  开发笔记 > 编程语言 > 正文

控制对".internal"包的访问的最佳实践

如何解决《控制对".internal"包的访问的最佳实践》经验,为你挑选了1个好方法。

我编写Eclipse插件并将一些类导出为API,同时希望限制对其他类的访问.

我按照常见的Eclipse实践将这些类分成".internal"子包.

但是,我不能在这些类上使用"包"或默认级别访问,因为我们导出的类需要使用它们中的许多.

防止或阻止我的API用户出于自己的目的使用这些类的最佳做法是什么?有自动检查器吗?

我承认,当我别无选择时,我已经涉足了使用Eclipse的一些内部类:)

澄清:我对非插件代码有类似的需求.



1> Stephen..:

是不是只是将META-INF/MANIFEST.MF更新为插件osgi项目(如果它还没有?).它应该看起来像:

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: My-plugin
Bundle-SymbolicName: com.mycompany.mypluginname
Bundle-Version: 1.0.0
Bundle-Vendor: MyCompany
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Service-Component: 
Import-Package: org.apache.log4j;version="1.2.14" (, separated etc)
Export-Package: com.mycompany.mypluginname.myapipackage;version="1.0.0"

然后很好地省略.internal包.平台应该完成其余的工作.

顺便说一句,然后你可以在任何依赖包,插件等中使用Import-Package:而不是依赖于jar /项目(这是一种旧的,糟糕的方式,它不起作用 - 正如你所发现的那样).

这使您可以大量解耦代码依赖项.如果您确定您的插件代码应属于不同的jar/bundle,则只需移动单个包,并使新的bundle/plug-in导出它.由于客户端捆绑包只是从"云"(云是OSGi平台)导入包,因此您可以更自由地移动代码.

注意:如评论中所述,您无需在OSGi中运行应用程序即可获得此"好处".Eclipse可以在OSGi包限制下编译它的代码,并且您的构建/服务器可以在"未受保护的世界"中运行.例如,OSGi清单不对第三方(希望使用.internal)强制执行任何操作,但为需要它们的人提供"通知"和限制.

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有