问题标签 [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.
java - 私有构造函数和最终实例变量
如果您创建一个具有未初始化final
变量和private
默认构造函数的类,编译器会向您尖叫您有未初始化的final
变量。这一切都很好,很花哨,只是构造函数现在只是无法访问的代码。那么这只是 Java 创建者的疏忽,还是有一个合乎逻辑的幕后原因?还是我假设构造函数是无法访问的代码是错误的?
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
函数并同时让构造函数成为私有的。据我所知,第一个示例中的代码似乎是唯一可用的解决方案,即使它在术语或性能方面有一个众所周知的(并且记录在案的)缺点也是不言而喻的。
java - 私有构造函数不影响推土机
只是为了理解 Dozer,我创建了两个类 PrimaryType 和 SecondaryType 并尝试使用 Dozer 映射它们。推土机能够无缝地映射它们。
尝试将 SecondaryType 的构造函数设为私有,但 Dozer 仍然成功地创建了 SecondaryType 类型的对象并能够映射其字段。谁能解释推土机如何实例化一个具有私有构造函数的类?
PrimaryType.java
SecondaryType.java
AppMain.java
输出:
java - JaCoCo 和未涵盖的私有默认构造函数
我希望看到一个示例来防止JaCoCo将私有空构造函数报告为 Java 类中的未覆盖代码。
在我的 Maven 插件配置中
构造函数没有类似的东西吗?
.net - 有一个非静态类仅具有静态成员而不是使其成为静态的任何理由?
我昨天在接受采访,其中一个问题是什么是单例以及如何实现它。
来自 MSDN 的解决方案 #1:
我给出了最简单的解决方案(来自 msdn 实现的解决方案编号 1),而他想要线程安全的解决方案(解决方案编号 3)。
来自 MSDN 的解决方案#3:
让我感兴趣的是 msdn 示例中的私有构造函数。我不知道这样的事情存在。
看看msdn就可以了
然后我问:
为什么你会有一个只有静态成员的类,因此想阻止它的实例被创建,因此使用私有构造函数 - 而不是使类成为静态的?!
PS .:问题不在于单例- 是关于描述一个场景,我会选择创建一个仅具有静态成员的可实例化类(并因此最终创建对私有构造函数的需求)而不是使用静态类。
c# - 静态类 VS 私有构造函数
今天,我一直在阅读有关静态类和私有构造函数的内容。
静态类 - 我们不能在静态类上创建实例。我们不能继承静态类。仅生成单个实例。
Private Constructor - 我们无法创建实例。我们不能继承。(我不知道生成了多少实例。)
我创建了两个控制台应用程序,即一个用于静态类,一个用于私有构造函数。
静态类代码
我理解作为构造函数生成的单个对象被调用一次。
私有构造函数代码
现在,我不明白是否生成了任何对象。
我有两个问题。
问题 1. 我没有发现 Private 构造函数和 Static 类之间有什么特别的区别。您能否建议我在哪种情况下应该使用 Private Constructor 以及应该在哪里使用静态类,因为我可以同时使用它们。
问题2.如果我使用私有构造函数,会生成多少个对象?
谢谢。
编辑 :
我认为人们没有理解我的问题。我知道静态构造函数总是在第一次引用时调用一次。静态构造函数用于初始化类的静态成员。
问题 1. 我有一种情况:我需要创建一个无法实例化的类。我可以通过静态类或私有构造函数来完成。所以我的问题是“它们之间有什么区别吗?我应该使用哪一个??”
问题 2. 如果我使用私有构造函数,会创建多少个对象?如果答案为 0,那么私有构造函数的内存分配如何在 CLR 中工作。如果我使用私有构造函数,则没有内存分配。
java - 为什么我能够在子类中继承和调用私有构造函数?
我读到不可能从构造函数是私有的类创建子类,但奇怪的是我能够做到这一点,这个片段还有更多内容吗?
请有人提供易于理解且令人满意的解释。
我在https://www.compilejava.net/上运行了这个片段,输出为 10。
java - 带有私有构造函数的final类,设计原理是什么
我最近正在浏览一个 Netflix 开源项目
在那里,我发现了最终类和私有构造函数的使用。我完全意识到
- final 是为了避免继承
- private 是禁止实例化
但我只是想知道为什么它们都一起使用。虽然方法是静态的,所以我们可以在不实例化的情况下使用它们,但仍然渴望了解其背后的设计原理。
java - AppConfig.java 返回带有私有构造函数的bean?
由于AppConfig.java
安全性而没有注释扫描,并且app-config.xml
由于更难绑定而没有配置,我创建了这样的 spring-beans 实例:
一切都很好,但是如果我想阻止其他人创建 InstanceAddressService
怎么办?通常我会将构造函数声明为私有,但编译器给了我一个错误,我无法再访问私有构造函数 AddressService
了AppConfig
!
为了完整起见,这是AddressService
:
c++ - 为什么私有构造函数会阻止对象创建 C++
我一直读到私有构造函数会阻止对象创建。我已经在单例模式中使用过它们,并且我知道如何在使用私有构造函数(使用静态方法等)时创建对象。我知道构造函数用于初始化对象。
但我不明白是什么让私有构造函数阻止对象创建。如果我的对象没有被初始化怎么办。我的意思是它应该扔一些垃圾,但为什么它会限制?
我已经检查了 stackoverflow 中的所有现有答案,但我没有得到确切的概念。