Is a static class a singleton?

Possible Duplicate:
Difference between static class and singleton pattern?

I was wondering,

Would a class such as Java's Math class, where all methods are static be considered a singleton? Or does a singleton have to have an instance, eg: Math.getInstance().abs(... ) to qualify as a singleton?

Thanks


Having just static methods in a class does not qualify it being a Singleton , as you can still make as many instances of that class, if you have a public constructor in it.

For a class to qualify as Singleton , it should have private constructor , so that it can't be instantiated from outside the class, and have a static factory that returns the same instance everytime invoked.

If you really mean static class , then first of all, you can't have your top-level class as static . You can only have static nested class , in which case you don't need to create any instance of that class, but you can and you can create multiple instances and hence it as not Singleton .

Also, the class you mentioned - java.lang.Math , is not a static class. You should see the documentation of that.


Static classes in Java are just nested classes which aren't inner classes. (They're not like static classes in C#, for example.) They can still have instance methods, state etc - and there can be multiple instances.

java.lang.Math is not a static class.

And no, a class which never has an instance is not a singleton. The important difference is that a singleton can implement an interface (or even derive from an abstract class) whereas if you never create an instance of a class, any instance methods are pointless.


A class that is applied Singleton Pattern has one or none instance at any time on a JVM. That's why it's called single-ton. Having static or non-static members has no relationship with being singleton or non-singleton.

链接地址: http://www.djcxy.com/p/78820.html

上一篇: 单身人士使用静态成员和方法?

下一篇: 静态类是一个单例吗?