繁体   English   中英

避免在Java中创建对象

[英]Avoid Object Creation in Java

如何使用Java中的new运算符停止其他类以创建该类的对象。 例如,我有一个类A。我不希望任何其他类使用new运算符创建其对象。

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

还有其他吗?

 public class A{

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

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

class Test
{
    private Test(){ }

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

希望能帮助到你,

您可以通过将构造函数private

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 */
     }
 }

使用Enum在Java 5或更高版本中实现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();

    }

您可以使类抽象(尽管在这种情况下,任何类都不能实例化该类的实例,所以也许这不是您想要的),或将构造函数设为私有。

private A() {}

将构造函数设为私有。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM