9得票5回答
在C#中将基本实例转换为派生类(向下转型)

假设我有两个类: class Employee 并且 class AdvancedEmployee:Employee 我知道类似于这样的操作是不可行的,因为在C#中无法进行向下转型: var employee = new Employee(); var advanced = e...

9得票4回答
在Java中无法使用List类进行向下转型

我一直在寻找答案但没有成功。我的问题是为什么无法使用泛型进行向下转型。我有一个名为Job的类,它继承了一个名为Model的类。 Job extends Model 现在我从一个可重用的代码中获取一个作业集合,该代码生成一个模型列表。 // error: Cannot cast from...

9得票1回答
Java中的隐式向上转型和显式向下转型

当Java可以隐式地进行向上转型时,为什么它不会隐式地进行向下转型?请举些简单的例子加以解释。 例如: ``` class Animal { public void eat() { System.out.println("Animal is eating"); } } c...

8得票1回答
F#: 下转换一个带标签的联合类型

我有一个判别联合类型: type F = | A of int | B of float 假设我有一个已经筛选出只包含A类型对象的F列表: let listOfAs=list.filter (fun f -> match f with | A(f') -> true | _...

8得票2回答
如何避免向下转型?

我有一个状态模式的实现,其中每个状态都处理从事件队列中获取的事件。因此,基本的State类具有一个纯虚方法void handleEvent(const Event *)。事件继承基本的Event类,但每个事件包含其数据,可以是不同类型的(例如int,string ...或其他)。handleE...

8得票5回答
我们为什么需要下行转型?

我正在试图弄清楚为什么需要向下转型。我重新阅读了我的大学笔记,并发现以下示例。 class Student {...} class Graduate exteds Student { getResearchTopic(){...} // this method only exists...

7得票2回答
如果无法寻址标准输入(stdin),我该如何从stdin或文件中获取输入?

我正在将一些Python代码移植到Rust作为学习练习,并需要从文件或stdin获取输入。我在一个结构体中保存了我的输入句柄,所以我想用一个Box<io::Read>来处理它,但我遇到了一个需要在输入上进行查找的情况,而seek不是Read特征的一部分。我知道你不能在管道中查找,所...

7得票4回答
从基础指针向模板化派生类型进行向下转换

我有以下层次结构: class base { public: virtual ~base(){} virtual void foo() {} }; template <typename T> class derived1 : public base { vir...

7得票5回答
如何正确使用dynamic_cast进行向下转型?

我对 dynamic_cast 非常困惑。《C++ Primer》和 cppreference(规则5)的材料都不能帮助我理解。(cppreference 比书难得多,我都非常仔细地阅读了它们两个。) 来自《C++ Primer 第五版》: dynamic_cast<type*&gt...

7得票2回答
Swift错误:在将“Any”向下转换时

以下代码几乎完全复制自苹果官方文档,并且可以编译通过: guard let firstItem = (rawItems! as? Array<Dictionary<String, Any>>)?.first else { throw AnError() } ...