[英]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.