gpt4 book ai didi

java - 单例类和静态类的区别?

转载 作者:IT老高 更新时间:2023-10-28 21:14:46 25 4
gpt4 key购买 nike

Possible Duplicates:
Difference between static class and singleton pattern?
What is the difference between a Singleton pattern and a static class in Java?

你好我不清楚单例类和静态类有什么区别?谁能举例说明一下?

最佳答案

单例类:单例类是每个类加载器只能存在单个实例的类。

静态/帮助类(只有静态字段/方法的类):不存在此类的实例。只有字段和方法可以作为常量或辅助方法直接访问。

以下引用自此blog "Static classes in Java"很好地描述了它。该博客也有解释相同的示例:

单例示例:

public class ClassicSingleton {
private static ClassicSingleton instance = null;

private ClassicSingleton() {
// Exists only to defeat instantiation.
}

public static ClassicSingleton getInstance() {
if (instance == null) {
instance = new ClassicSingleton();
}
return instance;
}
}

静态类示例:

/**
* A helper class with useful static utility functions.
*/
public final class ActionHelper {

/**
* private constructor to stop people instantiating it.
*/
private ActionHelper() {
// this is never run
}

/**
* prints hello world and then the users name
*
* @param users
* name
*/
public static void printHelloWorld(final String name) {
System.out.println("Hello World its " + name);
}

}

那么这两个示例有什么区别,为什么我认为第二种解决方案更适合您不想或不需要实例化的类。首先,如果您想创建一个类的一个实例,单例模式非常有用。对于我的助手类,我们真的不想实例化该类的任何副本。您不应该使用 Singleton 类的原因是,对于这个帮助类,我们不使用任何变量。如果单例类包含一组我们只想要一组的变量并且方法使用这些变量但在我们的辅助类中我们不使用除了传入的变量(我们将其设为最终变量)之外的任何变量,那么单例类将很有用.出于这个原因,我不相信我们想要一个单例实例,因为我们不想要任何变量,也不想要任何人实例化这个类。因此,如果您不希望任何人实例化该类,通常是如果您有某种帮助器/实用程序类,那么我将使用我称之为静态类的类,它是一个具有私有(private)构造函数的类,并且仅包含静态方法而没有任何任何变量。

我的回答 here 也引用了相同的答案

关于java - 单例类和静态类的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3714971/

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