在Java API / Jar中隐藏公共方法

时间:2015-01-28 12:49:31

标签: java android methods javadoc

我正在准备一个Android Java Jar,它有一些公共方法。我的要求是我想在jar中隐藏某些公共方法,即开发人员不能直接(他可以通过反射直接使用它)使用我提供给他/她的jar使用这些方法。 p>

在AOSP中,我看到这是使用@hide评论完成的,但同样对我不起作用。

请告诉我这个。

2 个答案:

答案 0 :(得分:2)

使方法不是public。或者,不要运送JAR。在Java JAR中,没有任何概念让事情public仍然无法使用。

  

在AOSP中,我看到这是使用@hide评论完成的,但同样对我不起作用。

AOSP创建了两个JAR。一个在编译时使用,它不包含@hide - 带注释的项。该JAR未包含在APK文件中。在运行时,使用单独的JAR,一个包含@hide - 注释项的JAR。这是可能的,因为Android控制运行时类路径。

答案 1 :(得分:2)

对于您不希望外部访问的方法,您需要使用私有(或受保护)修饰符。

我认为在你的情况下你想要将一些方法定义为public,因为这很容易在代码中访问它们,也许是因为你需要在不同的包中。

我不知道您的API是如何实现的,但为了实现您的目标,您需要在设计/架构中进行更改。你几乎没有可能:

  • 将您的类定义为final,将方法定义为protected
  • 通过接口公开您的API,而不是直接公开类
  • 实现将暴露逻辑的外观类。请参阅Facade pattern
  • 实现包装器类(可能也是最终的,并且您的方法受到保护)。请参阅Wrapper-Decorator