何时在 Java 中将方法设为静态?例子

        在 Java 中将方法设为静态是一个重要的决定。虽然static 关键字是基本概念之一,但很多时候程序员会混淆是否使特定方法静态。在 Java 编程中,将方法设置为静态的主要动机是方便。您可以调用静态方法,而无需创建任何对象,只需使用其类名。因此,如果您需要一个想要通过类名直接调用的方法,请将该方法设为静态。实用程序类(例如java.lang.MathStringUtils) 是使用静态方法的类的良好示例。在将方法设置为静态之前,还应该了解静态方法的局限性,因为无法覆盖 Java 中的静态方法。 

Java中的静态方法有什么作用?

当在 Java 代码中看到静态方法时,你会想到什么?当看到静态方法时,会做出什么推理和假设?学习这一点对于确保我们正确使用静态方法非常重要。
1)静态方法不修改对象的状态。由于对象的状态是作为实例变量维护的,因此Java不允许在静态上下文中使用非静态变量。现代 IDE(例如 Netbeans)也以斜体显示静态方法,以将其与其他方法区分开来。
2)静态方法主要对参数进行操作,几乎所有静态方法都接受参数,执行一些计算并返回值。

Java 中静态方法的规则

没有硬性和快速的、编写良好的规则来决定何时使方法静态或不静态,但是很少有基于经验的观察,这不仅有助于使方法静态,而且还指导何时使用静态方法在Java。你应该考虑在 Java 中将方法设为静态:
1)如果方法不修改对象的状态,或者不使用任何实例变量。
 
2) 你想要调用该方法而不创建该类的实例。
 
3) 方法是静态的一个很好的候选者,如果它仅适用于提供给它的参数,例如public int Factorial(int number){} ,则此方法仅适用于作为参数提供的数字。
4)实用程序方法也是静态的良好候选者,例如StringUtils.isEmpty(String text) ,这是检查 String 是否为空的实用程序方法。
5) 如果方法的函数在类层次结构中保持静态,例如equals() 方法不是静态的好候选方法,因为每个类都可以重新定义相等性。


 

Java中什么时候使用静态方法?

      现在,我们知道了在 Java 中将方法设为静态的好处和局限性,我们可以看到一些可以使用静态方法的场景。工厂设计模式提供了静态方法的良好使用。你可以使用静态方法来创建类的实例。即使Effective Java 书也建议使用静态工厂方法,Java 库中的几个示例是从Executors 类创建线程池。 
Executors提供了很多静态方法来创建不同类型的线程池,例如public static ExecutorService newCachedThreadPool() 、public static ExecutorService newFixedThreadPool(int nThreads)等。 
JDK 中静态方法的另一个有趣的用途是集合类,例如集合和数组,它们提供了许多静态实用方法来操作不同类型的集合。 
静态方法还可以与变量参数组合来创建显式元素的集合,例如EnumSet.of(E first, E...rest)。除此之外,如果您查看 Apache commons-lang 库,您会发现 utils 类的模式,例如StringUtils 、ArrayUtils ,它们提供了对String和数组 进行操作的实用方法。
我见过的静态方法的一个更有趣的用法是 不同值类中的valueOf()方法,例如java.lang.String ,虽然这也是工厂方法的 一个示例,但它也是将一种类型转换为另一种类型的好方法。 
例如,  Java 中的valueOf()也可用于将 String 转换为 Integer。简而言之,使用静态方法是有意义的:
1)随着创造性的设计模式,例如工厂和单例。
 
2) 作为实用方法,对参数进行操作。
 
3)转换工具,例如valueOf() 。
这就是关于何时在 Java 中将方法设为静态的全部内容。我们已经了解了将方法设置为静态的优点和局限性,以及 JDK 中静态方法的一些示例。JDK 示例还将帮助决定何时在 Java 中使用静态方法。


 

你可能感兴趣的:(java,开发语言)