加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 控制对“.internal”包的访问的最佳实践

发布时间:2020-12-14 16:29:27 所属栏目:Java 来源:网络整理
导读:我编写 Eclipse插件并将一些类作为API导出,同时希望限制对其他类的访问. 我遵循Eclipse将这些类分成“.internal”子包的常见习惯. 然而,我不能在这些类上使用“包”或默认级别访问,因为它们中的许多需要被导出的类使用. 防止或阻止我的API的用户为了自己的目
我编写 Eclipse插件并将一些类作为API导出,同时希望限制对其他类的访问.

我遵循Eclipse将这些类分成“.internal”子包的常见习惯.

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

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

我承认,当我没有选择时,我已经使用了一些Eclipse的内部类

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

解决方法

不是仅仅是将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"

然后很好地省略了.内部包.平台应该休息.

顺便说一下,然后使用Import-Package:在任何依赖的bundle,plugins等中,而不是依赖于jar / project(这是老的,吮吸的方式,它不起作用 – 正如你所发现的).

这样可以大大减少你的代码依赖关系.如果你决定你的插件代码应该属于不同的jar / bundle,那么你只需移动单独的包,并使新的bundle / plug-in导出它.由于客户端捆绑从“云”导入包(云作为OSGi平台),您可以更自由地移动代码.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读