问题标签 [object-construction]

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 投票
9 回答
153534 浏览

c++ - 为什么我更喜欢使用成员初始化列表?

我偏爱在我的构造函数中使用成员初始化列表......但我早就忘记了这背后的原因......

您在构造函数中使用成员初始化列表吗?如果是这样,为什么?如果不是,为什么不呢?

0 投票
2 回答
6727 浏览

javascript - JavaScript:使用没有运算符'new'的构造函数

请帮助我理解为什么以下代码有效:

第一行没有new运算符。

据我所知,JavaScript中的构造函数是一个初始化操作符创建的对象的函数,new它们并不意味着返回任何东西。

0 投票
3 回答
4868 浏览

c++ - 对象构造/转发函数声明歧义

Observation: the codes pasted below were tested only with GCC 4.4.1, and I'm only interested in them working with GCC.

你好,

我不只是几次偶然发现一个我不理解的对象构造语句,直到今天我才注意到它引入了哪些歧义。我将解释如何重现它,并想知道是否有办法修复它(允许 C++0x)。就这样吧。

假设有一个类的构造函数只接受一个参数,而这个参数的类型是另一个具有默认构造函数的类。例如:

如果我尝试Class在堆栈上构造一个类型的对象,我会感到模棱两可:

我说这是一个对象构造,但编译器坚持认为它是函数体内的前向声明。对于仍然不明白的你,这里有一个完整的例子:

So well, enough examples. Anyone can help me get around this without making anything too anti-idiomatic (I'm a library developer, and people like idiomatic libraries)?

-- edit

Never mind. This is a dupe of Most vexing parse: why doesn't A a(()); work?.

Thanks, sbi.

0 投票
4 回答
244 浏览

java - 我应该在构造时加载我的 Java 对象的数据,还是通过方法调用显式加载?

这是一个设计问题。我正在尝试在两种实现之间做出决定。

为了正确解释这一点,我需要一个例子。因此,为了举例:

我有一个类可以生成关于特定日期的某些股票市场价值的报告。我创建一个StockMarketReportGenerator对象,将今天的日期传递给它,它会根据今天的市场价值生成一份报告。

StockMarketReportGenerator有一个”StockMarketData对象。该对象的StockMarketData目的是包含存储在数据库中的表(可能称为 StockMarket :))中的所有股票市场值,以及从表数据计算的一些进一步的值。它具有与数据库连接、检索数据、进行必要计算并将最终值存储在对象的成员变量中的私有方法。(然后它具有公开这些值的 getter 方法,但没有 setter 方法。)StockMarketData该类基本上是股票市场数据值的“持有者”。我有一个名为“calculateStockMarketData()" 调用所有这些私有辅助方法并设置对象。(我知道所有这些处理都可以通过 Hibernate 等框架更轻松地处理;但决定手动进行,因为它非常小,有点临时项目,不值得设置。)

我的问题是——在我的ReportGenerator课堂上,我只需要该StockMarketData对象即可访问它的属性/成员变量——后处理和后计算。这意味着真的,我想让对象预先填充数据。所以我保持calculateStockMarketData方法私有,并从StockMarketData 构造函数中自动调用它。但是我对在构造函数中完成所有处理然后没有任何公共方法感到有些不安。这是设计缺陷吗?或者这真的是最合乎逻辑的方式吗?基本上,以下两种实现中哪一种更好?

1)(我当前的实现)将中心calculateStockMarketData()方法设为私有并从StockMarketData方法构造函数中调用它(传递今天的日期),这样每当你有一个StockMarketData对象时,它就已经被填充了。所以ReportGenerator在我开始使用对象属性之前,我需要的只是这行:

2) 将中心calculateStockMarketData()方法公开,以便设置StockMarketData对象需要显式调用该方法。所以从ReportGenerator课堂上我会编码:

第一个给我的印象是更好的设计,特别是因为在初始化之前不可能使用对象属性。但我也不确定关于从构造函数执行大量代码的标准......我应该选择哪个?

0 投票
1 回答
120 浏览

.net - 如何在不初始化的情况下构造对象?(。网)

当你在 C# 中新建一个对象时,必须发生一些事情:

  1. 创建对象的内存,以及任何其他簿记 CLR 做什么
  2. 字段被初始化为默认值
  3. 构造函数被调用

序列化框架似乎有一些神奇的方式来做 1 而不做 2 和 3。或者它毕竟没有那么神奇。如果您正在编写自己的反序列化代码,您将如何做同样的事情(跳过 2 和 3)?

0 投票
4 回答
2860 浏览

c# - 使用内部构造函数创建泛型类

是否可以在泛型方法中使用其内部构造函数构造对象?

FooFactory与 位于同一程序集中Foo。类调用工厂方法是这样的:

他们得到编译时错误:

'Foo' 必须是具有公共无参数构造函数的非抽象类型,才能将其用作泛型类型或方法 'FooFactory.CreateFoo()' 中的参数 'TFooType'

有没有办法解决这个问题?

我也试过:

这会在运行时引发相同的错误。

0 投票
4 回答
1803 浏览

design-patterns - 需要一种设计模式来删除对象创建中的枚举和 switch 语句

假设我正在创建一个体育游戏,在这个游戏中玩家可以扮演各种位置,进攻,防守等。所以我首先创建一个基类:

和子类...

等等。这一切都很好。

但现在我需要一个函数来创建这些对象。我需要按位置创建功能。因此,一种可能的解决方案是创建所有位置的枚举并将此值传递给打开枚举并返回适当对象的函数。但这会触发我的代码气味警报。这个灵魂将类、枚举和函数内的开关联系在一起:

我应该看什么解决方案?这是哪种设计模式?

0 投票
3 回答
1515 浏览

mysql - 加速 Hibernate 对象的创建?

我们使用 Hibernate 作为 MySQL 数据库之上的 ORM 层。我们有很多模型对象,其中一些非常大(就字段数量等而言)。我们的一些查询需要从数据库中检索大量(如果不是全部)模型对象,以对它们进行各种计算。

我们启用了延迟加载,但在某些情况下,Hibernate 仍然需要大量时间来填充对象。MySQL 查询的执行时间非常快(大约几毫秒),但是 Hibernate 会花时间填充对象。

有什么方法/模式/优化来加速这个过程吗?

谢谢。

0 投票
5 回答
450 浏览

c++ - c++这个指针问题

事情就是这样,我想要(可能不是最好的事情)能够调用一些类构造函数,该构造函数接收作为参数的指向正在调用的类的指针(ufff !!!)。好吧,代码看起来更好,就像我在 C# 中所做的那样。

那么,如何在 c++ 中实现相同的结果?提前谢谢。

0 投票
4 回答
47782 浏览

java - 在匿名类中测试方法时,如何使用 Powermockito 模拟新对象的构造?

我想编写一个 JUnit 测试来验证下面的代码是否使用了 BufferedInputStream:

(FilterFactory 是一个接口。)

到目前为止,我的测试如下所示:

对 PowerMockito.spy 的调用会引发异常并显示以下消息:

我应该使用什么代替 PowerMocktio.spy 来设置对 whenNew 的调用?