gpt4 book ai didi

java - 从私有(private)构造函数创建对象 - eclipse/java bug?

转载 作者:行者123 更新时间:2023-12-01 20:26:51 28 4
gpt4 key购买 nike

刚刚注意到,当我创建模型时,我能够创建一个私有(private)构造函数...可能只是需要确认 java 或 eclipse 错误。我知道这有点不可能,但你自己试试吧。

创建一个任意模型。

//case1
public class Main {

private Main(){}
public Main(Double...doubles ){}
}

通常你无法创建一个对象Main m = new Main();但是当你创建这样的模型时:

//case2
public class Main {

private Main(){}
public Main(Double [] doubles ){}
}

无法创建和对象Main m = new Main();

事情是这样的吗?如果有任何解释,我们将不胜感激。

Java:build 1.8.0_131-b11

Eclipse:版本:Neon.3 发行版 (4.6.3)

最佳答案

这不是一个错误。在情况 2 中,您实际上正在创建一个私有(private)构造函数,这意味着您无法使用不带 args 的默认构造函数实例化 Main 对象。您只能使用定义该对象的同一类中的私有(private)构造函数来构造对象。

public class Main {

private Main() {
}

public Main(Double[] doubles) {
}

public void testPrivateConstructor() {
Main mainObjectInsideTheSameClass = new Main();
}
}

情况 1 中的第二个构造函数是公共(public)的,并且它采用可变数量的参数。因此,当您使用 Main m = new Main() 创建对象时,您实际上使用的是第二个公共(public)构造函数,并且传递了零个参数。

案例 2 的具体用例之一是 Java 中的单例模式
引用:Can a constructor in Java be private?

关于java - 从私有(private)构造函数创建对象 - eclipse/java bug?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43770760/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com