为什么Java公共API有私有方法?

时间:2012-01-05 17:31:49

标签: java-me

前几天我正在查看java.security.BasicPermission API。为什么它有私有方法?

private void readObject(ObjectInputStream s)           调用readObject以从流中恢复BasicPermission的状态。

对不起,我不清楚我问的是什么。这个班只是一个例子。 Java库中有很多。所有这些都是read | write Object方法。当他们设计这个API时,为什么他们会添加一个应用程序无法使用的私有方法?

3 个答案:

答案 0 :(得分:2)

readObject是反序列化时Java序列化框架使用的,以提供对自定义操作的支持。与大多数私有方法不同,它通常不会在类本身内调用< - >而是由框架/ JVM调用,这显然违反了正常的期望。

有关详细信息,请参阅docs for Serializable

答案 1 :(得分:1)

该方法可能是由其他公共方法之一在内部调用的,不应该是API用户的关注。

答案 2 :(得分:0)

私有方法是API无法访问的方法,但在内部用于执行某些操作。

例如,采用像微波这样的现实世界的例子。它会有外部用户输入,如bake(),heat()等...但是像cookFor(时间分钟,温度t)这样的私有内部函数。

所以现在微波实现非常简单,

public void bake() {
  cookFor(45, 300);
}

public void heat() {
  cookFor(5, 100);
}

等。我们有函数的原因是编写好的过程程序,私有/公共描述符用于封装类。