Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何避免在ClassB中创建classA对象_Java - Fatal编程技术网

Java 如何避免在ClassB中创建classA对象

Java 如何避免在ClassB中创建classA对象,java,Java,在我的一次采访中,我有一个问题: 假设我有一个classA,我应该只在classA中创建classA的对象,而不在任何其他类中创建,例如: classA{ // some instructions ClassA a = new ClassA(); } ClassB{ //Some instructions ClassA a1 = new ClassA(); // Here I should throw a compilation or runtime error. } 我通过添加私有构造

在我的一次采访中,我有一个问题:

假设我有一个classA,我应该只在classA中创建classA的对象,而不在任何其他类中创建,例如:

classA{
// some instructions

ClassA a = new ClassA();
}

ClassB{
//Some instructions

ClassA a1 = new ClassA(); // Here I should throw a compilation or runtime error.
}
我通过添加私有构造函数告诉他,但他告诉我们应该能够在同一个类中创建多个对象。我可以将其设置为私有吗?

将其构造函数设置为私有:

这禁止在其他任何地方调用它。 例如,私有构造函数用于或 更新:正如@Arkadiy所注意到的,它并没有限制您可以创建的实例数量。

将其构造函数设置为私有:

这禁止在其他任何地方调用它。 例如,私有构造函数用于或
更新:正如@Arkadiy所注意到的,它并没有限制您可以创建的实例数量。

您可以通过对类的构造函数使用私有访问修饰符来实现它

私有访问修饰符只允许私有内容在它自己的类中访问

下表列出了访问修饰符及其访问范围

您可以通过对类的构造函数使用私有访问修饰符来实现它

私有访问修饰符只允许私有内容在它自己的类中访问

下表列出了访问修饰符及其访问范围

使构造函数私有化 遵循工厂方法或工厂模式 使构造函数私有化 遵循工厂方法或工厂模式

将构造函数设为私有。请注意,编译错误比运行时错误更可取。我也说过,但面试官说,我们应该能够在同一个类中创建多个对象。@user8579908那么面试官不知道他在说什么。将构造函数设为私有与可以创建的实例数无关。@user8579908我告诉过你,通过添加私有构造函数,可以将类设为单例类。啊,这是混淆的根源:你在这里引入了单例这个词;虽然私有构造函数对于非枚举单例是必需的,但它们在其他情况下使用。将构造函数设置为私有。请注意,编译错误比运行时错误更可取。我也说过,但采访者告诉我,我们应该能够在同一个类中创建多个对象。@user8579908如果面试官不知道他在说什么。将构造函数设为私有与可以创建的实例数无关。@user8579908我告诉过你,通过添加私有构造函数,可以将类设为单例类。啊,这是混淆的根源:你在这里引入了单例这个词;虽然私有构造函数对于非枚举单例是必需的,但它们用于其他情况。我也说过,但面试官说,我们应该能够在同一个类中创建多个对象。因此,请正确编辑您的问题。私有构造函数不排除多个实例。采访者把私人构造器和单身模式混为一谈。私有构造函数用于实现单例模式,但也可以在其他情况下使用。可能是面试官要求的静态工厂模式?这几乎只允许在类内部创建对象,但也允许从外部访问执行任务的方法。对于一个初级程序员来说,我想这不是一个最简单的问题。@Vlasec我想我们不应该猜测面试官说了什么,因为OP很可能误解了他。我也这么说了,但面试官说了,我们应该能够在同一个类中创建多个对象。因此,请正确编辑您的问题。私有构造函数不排除多个实例。采访者把私人构造器和单身模式混为一谈。私有构造函数用于实现单例模式,但也可以在其他情况下使用。可能是面试官要求的静态工厂模式?这几乎只允许在类内部创建对象,但也允许从外部访问执行任务的方法。我想对于初级程序员来说,这不是一个最简单的问题。@Vlasec我想我们不应该猜测采访者说了什么,因为OP很可能误解了他。这段代码不相关。@AndyTurner我编辑了这篇文章。这段代码不相关。@AndyTurner我编辑了这篇文章
private classA() {}