-2

默认情况下,一个类是否是单例的..

public class You{
}

public class My(){
public static void main(String a[]){

You you=new You();

}
}

you对象是单例..如果是单例如何使其原型..如果是原型如何将类作为单例..

先感谢您..

4

3 回答 3

6

不,这不是单例。您可以创建多个实例:

You you1 = new You();
You you2 = new You();

单例类只强制创建一个实例,通常通过包含一个私有构造函数和一个静态方法来检索单个实例。这可以在 Java 中使用只有一个值的枚举简单地实现。

然后:

如果是单例如何制作原型

术语“原型”在 Java 中没有任何意义。编辑:如果你在谈论 Spring,原型是一个范围- 它是 Spring 特定的。

于 2013-10-02T06:51:53.430 回答
3

默认情况下,一个类是否为单例。

不,该类不是单例,因为它具有编译器添加的默认 0-arg 公共构造函数。因此,您可以为它创建任意数量的实例。

如果它是原型,如何将一个类设为单例..

我想,您所说的术语与Spring 框架prototype中的实例范围有关。bean在 Spring 中,默认情况下所有 bean 都是单例的。要使其成为原型,您必须指定scope = "prototype". 但我建议您在进入框架之前学习 Java 的基础知识。

制作类单例时必须考虑各种事项:

  • 制作类final,使其无法扩展。
  • 制作所有字段private final
  • 制作构造函数private
  • 使用private static final该类中的实例字段和public static允许跨应用程序共享相同实例的 getter
  • 避免单例类在序列化反序列化时被实例化。

实现所有这些的最好方法是使用一个enum, 里面有一个常量:

enum You {
    INSTANCE;
}
于 2013-10-02T06:54:14.857 回答
1

默认情况下,一个类是否是单例的..

不,您可以为默认类创建多个实例。

you对象是单例..

不。(请参阅随附的链接,为什么不是)。

如果是单例,如何制作原型..

再次,它不是单例。它已经是一个原型(在你的假设中,非单例)

如果它是原型,如何将一个类设为单例..

在 Java 中实现单例模式的有效方法是什么?

最后:

在 Java中创建对象的官方文档

于 2013-10-02T06:59:06.707 回答