问题标签 [downcast]
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 - Java中的强制向下转换
我想对一个不能被向下投射的对象强制进行向下转换,并且想知道正确的方法是什么。用例是我有一个检查的规则列表以及生成失败规则列表的内容。失败的规则是规则的子类。但是像
FailedRule failedRule = (FailedRule) rule;
将失败,因为规则对象不是 FailedRule 的实例
为了解决这个问题,我实例化了一个克隆;
FailedRule failedRule = new FailedRule (规则);
我的 FailedRule 类看起来像这样
有没有更简单的方法来做到这一点?回答我自己,设计有缺陷,代码应该是:
java - 检测对象类型然后相应地转换它?
我的方法将一个对象作为输入。我如何确定它的类型,然后相应地转换它?
例如:binarySearch( Object o );
在 binarySearch 方法中,我需要一种方法来确定 Object o 的类型(或类)。然后我需要用那种类型来投射它。我该怎么做???
更具体地说,对象 o 是基类的子类(EG SalariedEmp 是 Employee 的子类),我特别需要基类。
编辑:我想出了如何做我想做的事,这真的应该是一个完全不同的问题。我需要使用 .compareTo 方法Comparable
来设置一种方法来根据来自这些对象的私有数据来比较两个对象。我所要做的就是使用implements
关键字将我的类实现为“Comparable”。因此,无论在我的 binarySearch 方法中比较什么类型的对象,如果它们是相同(未知)类型并且实现了 Comparable,它就可以工作。这使得我的 binarySearch 方法非常可用于任何类型的可比较类。
因此,公平地说,我会接受涵盖原始问题的答案。
:)
c# - C# 向下转换问题
在以下情况下是否有效且合法并向下投:
还是使用组合/聚合更好?
c++ - C++ dynamic_cast - 多态要求和向下转换
在下面的代码中,obj
在案例 1 中构造的同时,我们也构造了一个derived
类对象,但是它的成员函数是无法访问的obj
。因此,在向下转换时(即,在情况 2 中),使用obj
作为源,我们已经在其中构建derived
了。为什么obj
需要是多态的?
如果我对上面的描述感到困惑,为什么obj
在向上转换时不需要是多态的,但是在向下转换时它在使用时确实需要是多态的dynamic_cast
?
c++ - 在 C++ 中使用类层次结构时是否应该避免向下转换?
假设我正在编写一个适用于项目的应用程序,并根据项目的类型公开不同的功能。我有不同类型项目的类层次结构:
现在,我打算将 AbstractProject *_currentProject 指针作为应用程序主类中的成员,在启动时弹出一个对话框并根据选择执行以下操作:
稍后,我将不得不向下转换指向特定类型的指针,以利用特定于不同 Project-s 的功能。不知怎的,这让我感到不安。有没有更好的方法来做到这一点?
c++ - C++ - 更快地向下转换树节点的子节点?
我有一个简单的层次结构树结构,其基类 Node 表示一个节点。一个节点可以是另一种特定类型(子类化)。
我有几个子类Node
:
假设我知道一个教师节点的所有子节点都是DepartmentNode
类型,为了节省开发人员的工作,我打算做类似的事情
但这需要O(n)
,并且每次调用时都会创建新的向量对象。
有没有更好的方法来做到这一点?
java - 您可以在不声明新变量的情况下在 java 中向下转换对象吗?
我试图做类似的事情
我声明变量
但是如果我调用 xyz.method(),我只能调用 O 类的方法,而不是 E 的方法,所以我可以通过
我的问题是——你能在不声明新变量的情况下做到这一点吗?就像是:
现在我可以使用 xyz.method() 来调用 E 的方法
有没有办法在java中做到这一点?
java - 向下转换的对象指向哪里?
我的问题:
为什么h.n
之后仍然打印 7 h = (Horse) ah
?赋值后它应该指向同一个对象,ah
并且 n 字段指向 5?
c# - 在不失表现力的情况下从通用风格中脱颖而出
我有这样的事情:
注意:在这种情况下不接受覆盖
由于大量使用反射,在某些情况下我不得不沮丧Something<T>
,Something
但我想因为Cases
属性是隐藏的,所以我正在丢失Cases
数据。
我该如何规避这种情况?我试过使用where T:object
,但这也不被接受。
编辑:这是为什么我需要继承的一个例子:
但是,因为“案例”是隐藏的,所以它将始终为空。如果没有继承,我将不得不用所有可能的通用参数编写一个 BIG if-then-else。而且,相信我,我确实必须使用someVar is Something和Reflection来构造所有这些对象。这是一个大型通用 API 正在转换为其他大型通用 API,因此它们不应该相互认识,并且转换应该尽可能透明。
c# - 在 C# 中向下转换对象列表
如何向下转换对象列表,以便列表中的每个对象都向下转换为派生类的对象?
这就是场景。
我有一个带有List
基本项目的基类,以及从它继承的两个类:
这个想法是不必复制构建项目列表所需的代码。有我需要的BaseItem
所有基本东西,我总是可以向下转换BaseItem
到派生项目之一。
当我有它们的列表时,问题就出现了。List
of是在BaseItem
中声明的,BaseClass
因为所有派生类都必须拥有它。但是在运行时访问它时,我似乎无法向下转换为派生类。