Java 如果类中有一个私有构造函数,会发生什么?

Java 如果类中有一个私有构造函数,会发生什么?,java,jsp,struts2,Java,Jsp,Struts2,如果类中有一个私有构造函数,会发生什么? (在Java中)您只能从类中的其他构造函数或从类中的静态方法调用它。您只能在当前类中使用该构造函数。这通常是限制从此类创建对象的一种方法。这意味着您无法从类中创建对象。这意味着(没有反射)构造函数将无法在您的类之外访问,因此其他类将无法调用它。只有类的成员才能创建其对象 class A{ private A(){} //private constructor private static A a = new A(); //you can

如果类中有一个私有构造函数,会发生什么?
(在Java中)

您只能从类中的其他构造函数或从类中的静态方法调用它。

您只能在当前类中使用该构造函数。

这通常是限制从此类创建对象的一种方法。这意味着您无法从类中创建对象。

这意味着(没有反射)构造函数将无法在您的类之外访问,因此其他类将无法调用它。只有类的成员才能创建其对象

class A{
    private A(){} //private constructor

    private static A a = new A(); //you can create A object as a field

    void test(){
        new A(); // you can create A object inside methods of your class
    }

    class Inner{ // inner classes are also members of outer class so you can use 
                 // A constructor here
        A a = new A(); //OK
        void test(){
            new A(); //OK
        }
    }
}

class B{
    A a = new A();//error: we don't have access to A constructor
}

当你尝试同样的方法时发生了什么?取决于你下一步想做什么。欢迎使用。请花些时间阅读常见问题解答。你的问题没有显示出任何研究成果,对未来的访问者也没有任何价值。简而言之,当构造函数是私有的时,类的对象只能从类中构造,这使得它类似于单例。但这在很大程度上取决于你想要什么。@Jayan没有理由它需要是一个单体。@Dave Newton-当然。如果内部类的构造函数是私有的,那么外部类会访问它吗?@DivyanshuKumar是的。我们使用嵌套/内部类型的主要原因之一是,它们对外部类的成员(和构造函数)具有完全访问权限,反之亦然,外部类对内部/嵌套类中的所有内容都具有完全访问权限(不管它们的可见性如何)。