当前位置: 首页 > 面试题库 >

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

江德润
2023-03-14
问题内容

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

我遵循将这些类分成“ .internal”子包的常见Eclipse实践。

但是,我不能在这些类上使用“包”或默认级别的访问权限,因为我要导出的类需要使用其中的许多内容。

防止或阻止我的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"

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

顺便说一句,然后您可以在任何相关的包,插件等中使用Import-Package:,而不是取决于jar / project(这是旧的,笨拙的方式,行不通-
您会发现)。

这使您可以大量分离代码依赖项。如果您决定插件代码应该属于另一个jar / bundle,则只需移动各个软件包,然后使新的bundle /
-plugin导出它即可。由于客户端捆绑包仅从“云”(云是OSGi平台)导入软件包,因此您可以更自由地移动代码。

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



 类似资料:
  • 提交对映改动 一次提交要包括一个相关改动。例如,对于两个错误的修复应该进行两次不同的提交。精简的提交可以让其他的开发团队人员更简单地明白其改动的用义。如果其中一次提交的改动出现了问题,也可以方便地回滚到改动之前的状态。借助暂存功能来标记相关的改动文件,Git 可以为你打造出非常精准的提交。 频繁地提交改动 经常性地提交改动可以确保不会出现特别庞大的提交,同时也可以比较精准地对应到所需要的改动上。此

  • 成员访问说明符 public 和 private(和第9章 继承 中介绍的 protected)可以控制类数据成员和成员函数的访问。类的默认访问模式是private,因此类的首部和第一个标号之间的所有成员的类型都是 private。每个标号之后,采用该标号表示的方式,直到遇到下一个标号或遇到类定义的右花括号(})。标号public、private和protedted可以重复,但这种情况不常用,容易

  • 1、类属性的访问控制 在 Java 中,有 public (公共)属性 和 private (私有)属性,这可以对属性进行访问控制。 那么在 Python 中有没有属性的访问控制呢? 一般情况下,我们会使用 __private_attrs 两个下划线开头,声明该属性为私有,不能在类地外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs。 为什么只能说一般情况下呢?

  • 本文向大家介绍详解Nginx 对访问量的控制,包括了详解Nginx 对访问量的控制的使用技巧和注意事项,需要的朋友参考一下 目的 了解 Nginx 的 ngx_http_limit_conn_module 和 ngx_http_limit_req_module 模块,对请求访问量进行控制。 Nginx 模块化 nginx 的内部结构是由核心模块和一系列的功能模块所组成。模块化架构使得每个模块的功能

  • 我有什么可用的选择来使用GWT来实现这一点?

  • 访问控制限制其他源文件和模块对你的代码的访问。这个特性允许你隐藏代码的实现细节,并指定一个偏好的接口让其他代码可以访问和使用。 你可以给特定的单个类型 (类,结构体和枚举)设置访问级别,比如说属性、方法、初始化器以及属于那些类型的下标。协议可以限制在一定的范围内使用,就像全局常量,变量,函数那样。 除了提供各种级别的访问控制,Swift 为典型场景提供默认的访问级别,减少了显式指定访问控制级别的需