问题标签 [instantiation]

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 投票
3 回答
599 浏览

java - Java:实例化还是继承?

我正在为我的一个应用程序编写日志服务,但我确信许多其他应用程序会使用它。在这种情况下,让应用程序扩展一个类并在原始类中默认启用我的所有日​​志记录(因为不惜一切代价需要一些日志记录,如应用程序入口点和出口点)或只是让应用程序实例化是否有意义一个新的日志对象,然后在需要的地方放置日志语句?

0 投票
2 回答
115 浏览

design-patterns - 某个类的重复配置:创建子类或工厂更好?

简短摘要:当您想要预定义类的某些实例化时,创建子类还是创建工厂更好?

问题背景

我有一个视图助手类 MyWebserviceUrl ,它有一堆属性。它的目的是生成一个url。

我希望能够拥有这个类的预配置实例,这样我就不必为同一个家族做这么多setThis()如果setThat()MyWebserviceUrl有一个类型的 url a,我想得到一个带有一些的实例与此类型有关的默认值a

我可以MyWebserviceUrl像这样通过子类解决这个问题

我还可以创建一个工厂,给定一个像“Foo”这样的参数可以MyWebserviceUrl为我配置一个对象。

我的问题:

  1. 我应该走子类路线还是工厂路线?
  2. 如果您建议工厂,这应该是
    • 单独的视图助手,
    • 普通工厂类,或
    • factory($name)中的方法MyWebserviceUrl

旁注:我目前正在 Zend Framework 中开发,但我认为这个问题更笼统。


edit1 →<em>更具体地说:我只需要将一些属性设置为默认值,而其余的则需要即时设置。

0 投票
3 回答
7479 浏览

c++ - 从这里实例化错误

我的编译器用这个我完全不理解的实例化错误来折磨我。

我有模板类listItem:

如果我尝试使用非原始数据类型初始化它的对象,例如:

我的编译器总是抛出这个错误。这个错误是用原始类型抛出的。

编译器的输出是:

我不会打扰你,但我不想花 2 个小时做一些愚蠢的事情......所以谢谢你所有的回复

0 投票
6 回答
266 浏览

java - 类内部或外部的值检查逻辑?

拿这个有人想要填写的骨架类来获取一系列网站上的 RSS 流:

现在,让我们考虑 refreshTime 必须大于零,并且 rssURL 应该是一个有效的 http 地址。

明显的反射是在构造函数内部有一些值检查逻辑。但是,无论发生什么,对构造函数的调用都会实例化一个 Object。这意味着如果值不允许对象完成它的工作,则对象最终将变得无用。这也意味着对象最终应该被转储或重用。

所以,这里有几个关于这个主题的问题:

  • 为什么有些类强加一个 getInstance() 方法以及可能是一个私有构造函数?如果我没记错的话,一个例子是 GregorianCalendar。
  • 在什么情况下你会使用同样的方法?
  • 在大多数情况下,您的构造函数中有检查逻辑吗?
  • 如果是这样,您是否将此应用于域模型的持久性上下文中使用的实体样式类?

欢迎您的所有回答。清楚地了解最常见的做法会很有趣。

0 投票
6 回答
29793 浏览

php - PHP:如何用另一个类中的参数实例化一个类

我处于需要用另一个类的实例中的参数实例化一个类的情况。这是原型:

现在,我需要使用下面类的cls函数来实例化上面的类:

现在,当我尝试在向其传递参数时创建测试类的实例时:

它给出错误:缺少参数 1 和 2;只有第一个参数被传递。

如果我实例化一个在其构造函数中没有参数的类,这很好用。

对于有经验的 PHP 开发人员来说,以上应该不是什么大问题。请帮忙。

谢谢

0 投票
1 回答
857 浏览

wpf - 当 WPF 元素具有 StaticResources 时,如何通过它们的类型实例化它们?

我需要通过反射为设计器实例化 WPF 类型(例如,UserControl 或 Page)。我遇到的问题是,当我尝试使用 Activator.CreateInstance 实例化这些时,我得到一个TargetInvocationException ,它最终包装了由StaticResource标记扩展引发的异常。

澄清:这些类型在运行时加载的不同程序集中!

显然,Activator.CreateInstance无法实例化使用{StaticResource XXX}标记扩展的类型,即使在类型定义中定义了静态资源也是如此。

因此,如果您只有以下类型的定义(类型 + xaml 文件):

您将如何在运行时启动它?

顺便说一句,要求您使用 DynamicResource 是不可接受的。Visual Studio 需要这个吗?然而,VS 能够启动您的 WPF 框架元素的副本并将其粘贴到设计器中。


这是一个演示该问题的示例应用程序(beta 2,抱歉)。

http://cid-f8be9de57b85cc35.skydrive.live.com/self.aspx/Public/ResourcesGoKaboom.zip

该应用程序尝试在其资源字典中加载带有绘图的页面。我尝试使用Application.LoadComponentActivator.CreateInstance动态加载它,但它们都失败了。


好的,上面的例子没有问题。问题是我在元素的属性中使用了 StaticResource,它引用了在该元素中定义的资源。

让我感到震惊的是,这在视觉工作室中有效。 所以在设计师那里,一切看起来都还不错,但 IRL 都是梨形的。恕我直言,这是一个错误,我已将其报告为:

https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=519244

不确定它是否是 VS 的失败……失败,或者 StaticResource 扩展是否在 VS 中工作但不是 IRL。

0 投票
4 回答
104 浏览

wpf - 这种元素实例化的方法叫什么?

每当我在后面的代码中创建 UIElement 时,我都会做这样的事情:

但后来我在某处看到了这种语法,想知道它叫什么。我从未在我的任何 .NET 书籍中看到过它:

这显然很好,因为它很简洁。所以我想我的问题是:

  1. 它叫什么?
  2. 以这种方式实例化 UIElement 有什么缺点吗?

我也很难找出正确的方法来设置 CornerRadius 和 StrokeThickness 等属性,并认为#1 的答案可能会帮助我进行更智能的搜索查询。

0 投票
2 回答
1569 浏览

php - PHP:通过引用实例化类?

我正在为 PHP 5.3 转换一些旧的 PHP 4.x 代码。我遇到了以下情况,但我不确定它的作用。

那和有什么区别:

0 投票
1 回答
419 浏览

java - 通过泛型参数实例化类 - 哪种方法更好

我有许多引用许多持久性类的 html 表单。

所有的 html 表单都是由一个类 HTMLForm 通过传入相应的 HTMLFields 实例生成的:

HTMLForm 查看 HTMLFields[] 数组以生成相应的 html 表单。因此,每组 HTMLFields[] 数组都需要不同的持久性类。持久性类就像

现在,由于我不能执行 T.newInstance(),因此 HTMLForm 构造函数将分配愚蠢的SunWontAllowTnewInstance(由于 sun 的泛型体系结构,这是一种愚蠢的必要性),然后稍后使用getPersistenceHandlerClass来获取适当的持久性处理类。

由于云计算按 cpu 小时收费,我的问题是,假设我有大约 25 个持久性类需要处理,那么它会使用更少的 cpu。上面的第一个还是后面的?

或工厂地图

或者就我应该如何克服 java 泛型缺点提出更好的建议(考虑 cpu 消耗),以另一种从参数 T 实例化的方法。(或者批评我为什么我过于兴奋地批评 sun 的泛型参数缺点)。

0 投票
6 回答
16709 浏览

c++ - 实例化后模板的专业化?

我的完整代码太长了,但这里有一个片段可以反映我的问题的本质:

编译此代码时,出现以下错误:

现在我必须为这些类专门化 std::hash (因为标准的 std::hash 定义不包括用户定义的类型)。当我在定义类之前移动这些模板特化时BPCFGParser,我会在尝试各种不同的东西时遇到各种错误,并且在某个地方(http://www.parashift.com/c++-faq-lite/misc-technical-issues .html ) 我读到:

每当您使用一个类作为模板参数时,该类的声明必须是完整的,而不是简单地向前声明。

所以我被困住了。我不能在BPCFGParser定义之后专门化模板,我不能在BPCFGParser定义之前专门化它们,我怎样才能让它工作?


您需要将专业化移动到 BPCFGParser 内部的内部类中。这样做符合这两个要求。

非常感谢您的回答:)

hash类在命名空间中定义std。它不允许我将模板专门用于hash非命名空间范围。甚至以下内容:

不工作。但是,当我用 附上专业时namespace std {},它给出了以下奇怪的错误:

velocityreviews中给出的答案中,有人声称不能在类中定义命名空间。所以我还是卡住了。