问题标签 [upcasting]

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 投票
8 回答
1399 浏览

c# - 在 C# 中向上转换并根据派生类型调用特定方法

我有几个类,都派生自相同的基类型。

其中一些存储在列表中。

与往常一样,这些类型中的每一种都必须以不同的方式处理。现在我有几种方法来处理它们,还有一种方法将基类型作为参数。

目前,我的 HandleAllTypes 看起来像这样:

现在这是废话。有没有办法像

通过MSDN和其他来源搜索,一无所获。

0 投票
1 回答
1322 浏览

wcf - 将派生类转换为基类以进行 WCF 序列化

我有两节课...

...我有一个 WCF 服务:

我需要将 A 的列表发送给客户端,但我只有 B 的列表。我不关心“_c”字段。我会认为这很简单:

但是对象的派生类型存储在列表中的基类型实例中。WCF 似乎试图反序列化并失败,因为 C 不可序列化(即使我已将其标记为已忽略)。我在客户端没有得到任何响应,而服务器端的方法就失败了。

但是我可以创建和发送(并在客户端接收)类型 A:

有没有办法比令人畏惧的(有效):

和 ..

0 投票
2 回答
154 浏览

c++ - 可接受的编程实践 - 转换和向上转换

以下是可接受的编程实践:

什么原因可以接受/不可接受?

(请避免提出关于在 TestA 中创建 TestB 赋值运算符的明显建议——这是关于是否应该或不应该以这种方式使用向上转换和/或转换运算符的问题)。

我还鼓励在评论中留下反馈以进行问题赞成/反对,以便我将来改进我的问题。

0 投票
2 回答
77 浏览

java - 真实类型的使用方法

我了解到我可以使用 Object 的真实类型来定义使用哪个 Method,例如:

现在它应该采用该bla(String x)方法,但我得到了编译器错误。我知道为什么:因为foo当前的类型是Object. 我不确定我目前是否正确,但我是这样理解的,Java 将通过真实类型(或特定类型)选择方法,所以如果我将其向下转换为Object,它将String选择Object方法已指定。

或者是在方法中确定类型的唯一if(foo instanceof xxx)方法void bla(Object x)?

PS:不要误会我的意思:我不是说我可以重载方法,我的意思是我要根据真实类型(而不是定义的类型)选择方法!

0 投票
4 回答
4465 浏览

c++ - “上调”的坏处是什么?

抽象类的目的不是让开发人员创建基类的对象然后向上转换它,AFAIK。

现在,即使不需要向上转换,并且我仍然使用它,它是否在某种程度上被证明是“不利的”

更多说明:
来自 C++ 中的思考:

通常在设计中,您希望基类只为其派生类提供一个接口。也就是说,您不希望任何人实际创建基类的对象,而只是向上转换到它以便可以使用它的接口。这是通过使该类抽象来实现的,

通过向上转换,我的意思是:baseClass *obj = new derived ();

0 投票
2 回答
389 浏览

java - 在Java中,为什么将字符类型转换为整数而不是扩展符号位

在 Java 中,按位运算会导致类型转换为整数并且还会导致符号扩展。例如,预计会出现以下情况:

在 Java 中,字符以 UTF-16 编码,每个单元用 2 个字节表示。

我期待的是 -1 而不是 32767。为什么在应用按位运算之前在类型转换期间没有扩展符号?有任何想法吗?

0 投票
1 回答
2500 浏览

java - Java通过对象引用比较两个属性

当为我的一个类覆盖 equals 属性时,是否可以这样实现它?有问题的属性(例如标识符)可以是 String、boolean、Date、Set 或 LinkedHashSet

为什么或者为什么不?

0 投票
3 回答
10701 浏览

c# - 向上投射一个对象

我正在寻找一种方法来获取向上转换对象的可能类型。例如:我有一个 MyControl 类型的控件,它继承了 Control。现在,当 MyControl 类型的对象向下转换为 Control 时,有办法找出它是否是顶级对象类型,或者现在何时获取可以向上转换的类型(在本例中为 MyControl) ? 我希望它向上转换到 MyControl(带有反射)并获得带有反射的属性。但我不知道 MyControl 在我必须这样做的地方。

MyControl 是用 new 实现 Visible 的。现在,当我调用 control.Visible = true 时,它​​将调用 Control 的 Visible,但我必须调用 MyControl 的 Visible。

谢谢你的帮助。

0 投票
1 回答
271 浏览

xml - 修复 Word 到 XML 转换中的超链接问题

我们使用两个阶段的过程将客户的 Word 文档转换为 XML。第一阶段使用 upCast 创建 XML 文件,然后运行自定义 XSLT 将输出转换为客户端的 DTD。此过程已在数千个文件上成功运行。

我现在有一些文件(源文档和该文档的翻译),其中的脚注无法正确链接。脚注是对文档末尾编号列表的上标交叉引用。在验证期间,我得到这个:

交叉引用指向该标识符,但底部的编号项目没有它。我尝试替换交叉引用并替换整个编号列表;错误仍然存​​在。我认为这是代码的问题,除了引用相同年份的其他文档(即,可能最初是在相同版本的 Word 中创建的,可能是 2003 年)工作正常。我该如何解决这个问题?

0 投票
2 回答
118 浏览

c++ - 作者所说的不良结果是什么?

这个例子取自 Bruce Eckel 的“Thinking in C++”第 14 章“Upcasting and the Copy Constructor”一节。

作者对此代码发表以下评论:

“ Child 的 operator<< 很有趣,因为它为其中的 Parent 部分调用 operator<< 的方式:通过将 Child 对象转换为 Parent& (如果您转换为基类对象而不是引用,则通常会得到不良结果):

我还运行程序,将上述指令替换为:

并且程序运行没有问题,只有一个预期的差异。现在Parent再次调用复制构造函数将参数复制cParent::operator<<().

那么,作者所说的不良结果是什么?