Java 使用私有构造函数
我是一个Android的begginer程序员,我在互联网上找到了一些代码,但我无法理解这个类不是要实例化的意思?!还有它的用途。如果有人能在这里帮忙,我会很高兴的Java 使用私有构造函数,java,oop,Java,Oop,我是一个Android的begginer程序员,我在互联网上找到了一些代码,但我无法理解这个类不是要实例化的意思?!还有它的用途。如果有人能在这里帮忙,我会很高兴的 public class Settings { //some code private Settings() {} // Class not meant to be instantiated //some code } 这种内在结构 private Settings() {} 是设置实例的构造函数。由于它
public class Settings
{
//some code
private Settings() {} // Class not meant to be instantiated
//some code
}
这种内在结构
private Settings() {}
是设置实例的构造函数。由于它是私有的,没有人可以在类本身之外访问它,因此不能创建任何实例。这个内部构造
private Settings() {}
是设置实例的构造函数。由于它是私有的,没有人可以在类本身之外访问它,因此不能创建任何实例。构造函数是私有的,因此它不意味着被类之外的任何东西调用构造函数是私有的,因此它不意味着被类之外的任何东西调用它不是嵌套类,这是一个构造函数。私有构造函数意味着您不能从外部构造此类的实例,如下所示:
Settings s = new Settings(); //Compilation error! :(
现在,如果一个类不能被实例化,它有什么用呢?最可能的原因是该类将从静态方法返回自身的实例,可能是作为单例。这些设置通常是程序的全局设置,因此单例模式非常适合这里。所以会有一个静态方法,类似这样
static private TheOnlySettings = null;
static public getSettings()
{
if(TheOnlySettings == null)
TheOnlySettings = new Settings(); //Legal, since it's inside the Settings class
return TheOnlySettings;
}
看看是否确实如此。它不是嵌套类,而是构造函数。私有构造函数意味着您不能从外部构造此类的实例,如下所示:
Settings s = new Settings(); //Compilation error! :(
现在,如果一个类不能被实例化,它有什么用呢?最可能的原因是该类将从静态方法返回自身的实例,可能是作为单例。这些设置通常是程序的全局设置,因此单例模式非常适合这里。所以会有一个静态方法,类似这样
static private TheOnlySettings = null;
static public getSettings()
{
if(TheOnlySettings == null)
TheOnlySettings = new Settings(); //Legal, since it's inside the Settings class
return TheOnlySettings;
}
看看是否确实如此。构造函数是私有的,因此只有类本身可以创建实例。这样做有几个原因。从我头顶上掉下来的一对 该类是一个只包含静态方法的实用程序类,因此实例化它毫无意义。由于这个类是注释类,所以我想这是最可能的原因 类本身控制自己的生命周期,并提供创建实例的方法。例如,如果类是一个懒惰的单例,它可能会提供一个方法,在第一次调用时创建一个实例,并在后续调用时返回该实例
构造函数是私有的,因此只有类本身可以创建实例。这样做有几个原因。从我头顶上掉下来的一对 该类是一个只包含静态方法的实用程序类,因此实例化它毫无意义。由于这个类是注释类,所以我想这是最可能的原因 类本身控制自己的生命周期,并提供创建实例的方法。例如,如果类是一个懒惰的单例,它可能会提供一个方法,在第一次调用时创建一个实例,并在后续调用时返回该实例
它是一个私有构造函数。这意味着外部类不能使用默认构造函数创建新实例 更多信息 Java中的所有对象都有一个默认构造函数: 这就是你如何上这门课的方法:
public class MyObject{}
并且仍然能够拨打:
MyObject mObj = new MyObject();
私人建造商
有时,开发人员可能不希望此默认构造函数可见。添加任何其他构造函数将使此构造函数无效。这可以是带有任何可见性修饰符的空参数的声明构造函数,也可以是不同的构造函数
在上述情况下,可能遵循以下模型之一:
Settings对象在Settings类中实例化,所有代码都是在这里运行的,这是一个Java通用模型,这样的类还将包含一个静态的mainString[]args方法
设置对象具有其他公共构造函数
设置对象是一个单例对象,通过访问器方法向对象提供设置对象的一个静态实例。例如:
它是一个私有构造函数。这意味着外部类不能使用默认构造函数创建新实例 更多信息 Java中的所有对象都有一个默认构造函数: 这就是你如何上这门课的方法:
public class MyObject{}
并且仍然能够拨打:
MyObject mObj = new MyObject();
私人建造商
有时,开发人员可能不希望此默认构造函数可见。添加任何其他构造函数将使此构造函数无效。这可以是带有任何可见性修饰符的空参数的声明构造函数,也可以是不同的构造函数
在上述情况下,可能遵循以下模型之一:
设置对象在
Settings类,所有代码都是在Java的公共模型中运行的,这样的类还将包含一个静态mainString[]args方法
设置对象具有其他公共构造函数
设置对象是一个单例对象,通过访问器方法向对象提供设置对象的一个静态实例。例如:
正如其他人提到的,具有私有构造函数的类不能从类外部实例化。在这种情况下,可以使用静态方法
class Demo
{
private Demo()
{
}
static void createObjects()
{
Demo o = new Demo();
}
}
class Test
{
public static void main (String ...ar)
{
Demo.createObjects();
}
}
正如其他人提到的,具有私有构造函数的类不能从类外部实例化。在这种情况下,可以使用静态方法
class Demo
{
private Demo()
{
}
static void createObjects()
{
Demo o = new Demo();
}
}
class Test
{
public static void main (String ...ar)
{
Demo.createObjects();
}
}
没有严格的true-类本身可以创建实例。在类之外不能创建任何实例。在这里,我们通过向上投票或接受答案来表示感谢。严格来说,不可能是真的-类本身可以创建实例。不能在类之外创建任何实例。此时,我们通过投票或接受答案来表示感谢。通过singleton设计模式-拥有私有构造函数的用例之一。通过singleton设计模式-拥有私有构造函数的用例之一。Java中的所有对象都有默认构造函数-这不是真的。如果您根本不提供任何构造函数,Java编译器将只添加一个默认构造函数。@Jesper,这将在问题中进一步解释。Java中的所有对象都有一个默认构造函数-这不是真的。如果您根本不提供任何构造函数,Java编译器将只添加一个默认构造函数。@Jesper,这将在问题中进一步解释。