gpt4 book ai didi

java - 为什么存在私有(private)静态方法,这些方法不在任何静态上下文中被调用?

转载 作者:行者123 更新时间:2023-12-02 11:01:36 24 4
gpt4 key购买 nike

由于静态内容是在类加载时加载的,因此甚至可以在对象创建之前使用 ClassName.member

但是如果静态方法是私有(private)的,那么你只能在类中执行此操作ClassName.method(),也可以直接通过method()访问,而无需附加类名.

因此,创建一个 private 方法 static 没有任何意义,除非它没有在同一类的任何 static 方法中使用。因为只有 private不能在同一类的其他静态方法中使用。

但是我看到一些方法没有在任何其他静态内容中使用,但它们仍然是静态。例如ArrayListhugeCapacity方法>-

private static int hugeCapacity(int minCapacity) {...} 

为什么我们不只将其保密?

private int hugeCapacity(int minCapacity) {...} 

能否让我了解一下在我们的 java 库中将此方法设为静态的背后意义?

最佳答案

做出这种区分(这不是强制性的)可以为类的客户传达一种含义,并为他们的行为提供提示。

private int hugeCapacity(int minCapacity) {...} 

假设方法行为取决于当前实例。因此,客户端类期望它可以操作实例成员和可选静态成员。

此时

private static int hugeCapacity(int minCapacity) {...} 

假设方法行为是与特定实例无关的类方法。因此它只能操作静态成员。

<小时/>

这不是一个很好的优化,但它节省了 JVM 传递给每个方法的额外参数。
您在源代码中看不到它,但对于实例方法,this 确实作为参数添加到编译的代码中。

关于java - 为什么存在私有(private)静态方法,这些方法不在任何静态上下文中被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45505962/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com