Java 什么时候单身人士不能像单身人士一样工作?
可能重复:Java 什么时候单身人士不能像单身人士一样工作?,java,singleton,Java,Singleton,可能重复: 有谁能告诉我当一个Singleton不能作为一个Singleton工作时?如果一个给定的类被多个类加载器加载,那么一个Singleton(在Java领域)就不能作为一个Singleton工作。由于单个类可以存在(或可以加载)在多个类加载器中,因此对于给定的JVM实例,很可能有一个“假定的”单例类的“多个”实例。但这是一个非常罕见的案例,而且很少发生 网站上有一篇很好的帖子,作者是约书亚·福克斯。请检查一下 下面是当您的Singleton的行为不符合以下情况时的一些场景 两个或多个虚
有谁能告诉我当一个
Singleton
不能作为一个Singleton
工作时?如果一个给定的类被多个类加载器加载,那么一个Singleton(在Java领域)就不能作为一个Singleton工作。由于单个类可以存在(或可以加载)在多个类加载器中,因此对于给定的JVM实例,很可能有一个“假定的”单例类的“多个”实例。但这是一个非常罕见的案例,而且很少发生 网站上有一篇很好的帖子,作者是约书亚·福克斯。请检查一下
下面是当您的Singleton
的行为不符合以下情况时的一些场景
这样的事情违背了单身汉的目的:
public class BadSingleton
{
private BadSingleton()
{
}
public BadSingleton getInstance()
{
return new BadSingleton();
}
}
每次调用getInstance()
方法时,上面将返回BadSingleton
类的新实例。这将允许类的各种实例违背单例设计模式的目的
使用多个类加载器也可以实现类似的场景(即使单例编写正确)。如果您能够创建多个类实例,则它不会通过克隆、反序列化等方式保持单例。当它编写不正确时。您是否有需要解释的具体示例?当您创建两个实例时,单例就不能作为单例使用。您能否详细说明您的问题?如果单例不能作为单例使用,则单例就不能作为单例使用。:)Java中的单例可以用不同的方式实现。添加您所指的具体实现的详细信息。@amicingh给出的链接似乎在Oracle获得Java所有权后发生了变化。我相信新的联系是,这根本不是单身,忘记好或坏。您可以讨论多个类加载器、多个JVM或其他什么,但必须有一些上下文,在这些上下文中,您的代码给出了一个单例。从来没有。我认为您在这里尝试的是采用一种实现单例的方法,并将其一半实现以产生一个bug,但它与
new-BadSingleton()
@mickeymoon:这不是我要说的->代码绝不会提供单例一样好吗?