java - 静态类是单例吗?

标签 java static singleton

<分区>

Possible Duplicate:
Difference between static class and singleton pattern?

我在想,

像 Java 的 Math 类这样所有方法都是静态的类会被认为是单例吗?还是单例必须有一个实例,例如:Math.getInstance().abs(...) 才有资格成为单例?

谢谢

最佳答案

在一个类中只有静态方法并不能使它成为单例,因为如果您有一个公共(public)构造函数,您仍然可以创建该类的尽可能多的实例

要使一个类成为Singleton,它应该有private constructor,这样它就不能从类外被实例化,并且有一个每次调用时返回相同实例的静态工厂

如果您真的是指 static class,那么首先,您不能将 top-level 类设置为 static。你只能有static nested class,在这种情况下你不需要创建那个类的任何实例,但你可以并且你可以创建多个实例,因此它不是Singleton.

此外,您提到的类 - java.lang.Math 不是静态类。您应该看到它的文档。

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

相关文章:

c# - 如何完全删除静态事件的所有项目

php - 使用配置文件的单例数据库连接

java - 我如何确定是否使用 Spring jpa 插入或更新记录

java - 使用带有 GridLayoutManager 的 RecyclerView 将动态按钮添加到手机和平板电脑的不同布局

java - Ambari 资源目录?

java - 安卓Java : Choose dynamically a subtype class

java - 带属性的 Spring 单例

java - mybatis ClassNotFoundException BuilderException TypeException

c++ - 在编译时设置静态常量值(不是通过预处理器)

php - 通过静态和非静态方法访问静态属性?