问题标签 [private-constructor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
438 浏览

java - 私有构造函数和最终实例变量

如果您创建一个具有未初始化final变量和private默认构造函数的类,编译器会向您尖叫您有未初始化的final变量。这一切都很好,很花哨,只是构造函数现在只是无法访问的代码。那么这只是 Java 创建者的疏忽,还是有一个合乎逻辑的幕后原因?还是我假设构造函数是无法访问的代码是错误的?

0 投票
0 回答
426 浏览

c++ - std::make_shared 和私有构造函数

我正在为该std::make_shared功能的一个(让我说)极端情况而苦苦挣扎,并且我没有设法找到一个可行的替代方案来解决我的(不那么严重的)问题。

以下代码编译良好:

直观地说,这是一个名为A的用户定义类的工厂的一个小例子。

通过查看 的文档std::make_shared我们发现:

此函数通常用于从调用 new 返回的原始指针替换共享指针的构造 std::shared_ptr(new T(args...))。与该表达式相反,std::make_shared 通常使用单个内存分配为 T 对象和 std::shared_ptr 的控制块分配内存(这是标准中的非绑定要求),其中 std::shared_ptr( new T(args...)) 至少执行两次内存分配。

非常有趣,它可能有助于将注释行与之后的注释行切换。它导致函数的以下代码create

A不幸的是,由于(错误类似于)的私有构造函数,此版本无法编译error: ‘constexpr A::A()’ is private

需要明确的是,问题不是错误本身,对我来说很清楚是什么原因造成的,这是有道理的。无论如何,我想知道是否有一种解决方法可以使用该std::make_shared函数并同时让构造函数成为私有的。据我所知,第一个示例中的代码似乎是唯一可用的解决方案,即使它在术语或性能方面有一个众所周知的(并且记录在案的)缺点也是不言而喻的。

0 投票
1 回答
128 浏览

java - 私有构造函数不影响推土机

只是为了理解 Dozer,我创建了两个类 PrimaryType 和 SecondaryType 并尝试使用 Dozer 映射它们。推土机能够无缝地映射它们。

尝试将 SecondaryType 的构造函数设为私有,但 Dozer 仍然成功地创建了 SecondaryType 类型的对象并能够映射其字段。谁能解释推土机如何实例化一个具有私有构造函数的类?

PrimaryType.java

SecondaryType.java

AppMain.java

输出:

0 投票
6 回答
13009 浏览

java - JaCoCo 和未涵盖的私有默认构造函数

我希望看到一个示例来防止JaCoCo将私有空构造函数报告为 Java 类中的未覆盖代码。

在我的 Maven 插件配置中

构造函数没有类似的东西吗?

0 投票
1 回答
78 浏览

.net - 有一个非静态类仅具有静态成员而不是使其成为静态的任何理由?

我昨天在接受采访,其中一个问题是什么是单例以及如何实现它。

MSDN的实现

来自 MSDN 的解决方案 #1:

我给出了最简单的解决方案(来自 msdn 实现的解决方案编号 1),而他想要线程安全的解决方案(解决方案编号 3)。

来自 MSDN 的解决方案#3:

让我感兴趣的是 msdn 示例中的私有构造函数。我不知道这样的事情存在。

看看msdn就可以了

然后我问:

为什么你会有一个只有静态成员的类,因此想阻止它的实例被创建,因此使用私有构造函数 - 而不是使类成为静态的?!

PS .:问题不在于单例- 是关于描述一个场景,我会选择创建一个仅具有静态成员的可实例化类(并因此最终创建对私有构造函数的需求)而不是使用静态类。

0 投票
5 回答
12973 浏览

c# - 静态类 VS 私有构造函数

今天,我一直在阅读有关静态类和私有构造函数的内容。

静态类 - 我们不能在静态类上创建实例。我们不能继承静态类。仅生成单个实例。

Private Constructor - 我们无法创建实例。我们不能继承。(我不知道生成了多少实例。)

我创建了两个控制台应用程序,即一个用于静态类,一个用于私有构造函数。

静态类代码

在此处输入图像描述

我理解作为构造函数生成的单个对象被调用一次。

私有构造函数代码

在此处输入图像描述

现在,我不明白是否生成了任何对象。

我有两个问题。

问题 1. 我没有发现 Private 构造函数和 Static 类之间有什么特别的区别。您能否建议我在哪种情况下应该使用 Private Constructor 以及应该在哪里使用静态类,因为我可以同时使用它们。

问题2.如果我使用私有构造函数,会生成多少个对象?

谢谢。

编辑 :

我认为人们没有理解我的问题。我知道静态构造函数总是在第一次引用时调用一次。静态构造函数用于初始化类的静态成员。

问题 1. 我有一种情况:我需要创建一个无法实例化的类。我可以通过静态类或私有构造函数来完成。所以我的问题是“它们之间有什么区别吗?我应该使用哪一个??”

问题 2. 如果我使用私有构造函数,会创建多少个对象?如果答案为 0,那么私有构造函数的内存分配如何在 CLR 中工作。如果我使用私有构造函数,则没有内存分配。

0 投票
1 回答
780 浏览

java - 为什么我能够在子类中继承和调用私有构造函数?

我读到不可能从构造函数是私有的类创建子类,但奇怪的是我能够做到这一点,这个片段还有更多内容吗?

请有人提供易于理解且令人满意的解释。

我在https://www.compilejava.net/上运行了这个片段,输出为 10。

0 投票
2 回答
7852 浏览

java - 带有私有构造函数的final类,设计原理是什么

我最近正在浏览一个 Netflix 开源项目

在那里,我发现了最终类和私有构造函数的使用。我完全意识到

  1. final 是为了避免继承
  2. private 是禁止实例化

但我只是想知道为什么它们都一起使用。虽然方法是静态的,所以我们可以在不实例化的情况下使用它们,但仍然渴望了解其背后的设计原理。

0 投票
2 回答
691 浏览

java - AppConfig.java 返回带有私有构造函数的bean?

由于AppConfig.java安全性而没有注释扫描,并且app-config.xml由于更难绑定而没有配置,我创建了这样的 spring-beans 实例:

一切都很好,但是如果我想阻止其他人创建 InstanceAddressService怎么办?通常我会将构造函数声明为私有,但编译器给了我一个错误,我无法再访问私有构造函数 AddressServiceAppConfig

为了完整起见,这是AddressService

0 投票
5 回答
3082 浏览

c++ - 为什么私有构造函数会阻止对象创建 C++

我一直读到私有构造函数会阻止对象创建。我已经在单例模式中使用过它们,并且我知道如何在使用私有构造函数(使用静态方法等)时创建对象。我知道构造函数用于初始化对象。

但我不明白是什么让私有构造函数阻止对象创建。如果我的对象没有被初始化怎么办。我的意思是它应该扔一些垃圾,但为什么它会限制?

我已经检查了 stackoverflow 中的所有现有答案,但我没有得到确切的概念。