避免在Java中创建对象

避免在Java中创建对象,java,Java,如何在java中使用new操作符停止其他类来创建类的对象。例如,我有一个类A。我不希望任何其他类使用new运算符创建其对象 一种方法是我可以在类A的构造函数中抛出IllegalArgumentException 还有别的吗 public class A{ public A(){ throw IllegalArguementException(); } } 将构造函数设为私有。您可以将类设为抽象类(尽管在本例中,任何类都不能实例化此类的实例,因此可能

如何在java中使用new操作符停止其他类来创建类的对象。例如,我有一个类A。我不希望任何其他类使用new运算符创建其对象

一种方法是我可以在类A的构造函数中抛出IllegalArgumentException

还有别的吗

 public class A{

      public A(){
        throw IllegalArguementException();
      }
 }

将构造函数设为私有。

您可以将类设为抽象类(尽管在本例中,任何类都不能实例化此类的实例,因此可能这不是您想要的),或者将构造函数设为私有类。

您所采用的方法是错误的。。使用这种方法也不能创建类的对象。
因此,必须将构造私有化,并编写静态方法来获取类的实例

class Test
{
    private Test(){ }

    public static Test getTestInstance(){
        return new Test();
    }
}  

希望有帮助,

您可以通过使构造函数
私有化来实现

class A
{
     int i;
     private A()
     {
          i=1;
     }
     public static A getInstance()
     {
          return new A();
     }
 }
 class B
 {
     A a;
     public B()
     {
     /*    a=new A();   //This doesn't compile */
     }
 }

在Java5或更高版本中使用Enum实现Singleton是线程安全的,通过Enum实现Singleton可以确保您的Singleton即使在多线程环境中也只有一个实例

public enum SingletonEnum {
 INSTANCE;
 public void doYourStuff(){
     System.out.println("Singleton using Enum");
 }
}
这可以从客户端调用:

public static void main(String[] args) {
        SingletonEnum.INSTANCE.doYourStuff();

    }
有很多答案
public static void main(String[] args) {
        SingletonEnum.INSTANCE.doYourStuff();

    }