问题标签 [runtime-type]

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 投票
5 回答
2612 浏览

java - 实现 Map.entrySet() 的泛型问题

我正在尝试扩展AbstractMap以创建一个MapTreeNode类(通过键而不是索引访问子节点的树节点)。

我已经有一种方法可以让一组孩子正常工作:

我想创建一个节点(Map<K,V>)的地图视图并重用child_set,但我不确定 Java 的泛型是否可行:

这当然给

有没有办法可以为此重用我的ChildSet课程?

0 投票
1 回答
1050 浏览

java - 以编程方式确定 java 实例的编译类型

假设我有一个扩展 java.lang.Object 的类,如下所示:

以及以下三个实例:

为了确定runtime-type,我只需要在实例上调用getClass()方法,如下所示:

哪个输出:

现在我的问题是如何以编程方式确定上述实例的静态/编译类型?

静态/编译类型是指“左侧”的类型。它输出:

0 投票
3 回答
206 浏览

c# - 为什么我会使用此代码获得“无效演员表”?

我有一个包含以下类型控件的表单(仅):

我有一个调用此方法的“清除”按钮:

...但是当我调用它时,应用程序挂起,并且日志文件显示该方法的“无效转换”。怎么可能?它应该处理 TextBoxes 和 ComboBoxes,而忽略其余部分 - 无效演员表可能在哪里?

0 投票
2 回答
1996 浏览

scala - scala按类型过滤

我已阅读TypeTag相关文章,但无法实现按元素类型过滤集合。

例子:

上面的代码工作正常。但是我想从中提取filter. v例如

在这种情况下,我会收到警告abstract type T is unchecked since it is eliminated by erasure。我尝试使用TypeTag,但运行时似乎并不容易Type

是否有任何优雅的解决方案来实现功能filter?通过 scala 宏的任何解决方案也是可以接受的。

0 投票
2 回答
40 浏览

java - 在方法中将类作为参数传递并在 If 语句中使用此参数

我想要这样的东西:

我主要谈论这部分:(iterator.next() instanceof clazz)- 这甚至可以像这样将 Class 作为参数传递吗?Eclipse 说“无法将 clazz 解析为类型”。

0 投票
3 回答
1631 浏览

c++ - 来自 void 的演员表的运行时检查*

假设我有一个void*包含指向 unknown 的指针class。我想用来dynamic_cast对我实际拥有的类的类型进行运行时检查。例如:

如果我尝试这样做,dynamic_cast<Foo*>(bar)我会得到:

'void *':dynamic_cast 的无效表达式类型

但是我需要 dynamic_cast,因为在我的实际情况下,我不确定这bar实际上是一个Foo*.

我在这里读过,一个解决方案是为所有bar可能包含的对象创建一个基类,reinterpret_cast指向该基类的指针,然后尝试dynamic_cast从该对象指针指向Foo.

这对我来说很难,因为可能存储的对象bar并不都在我的控制之下。(并且尝试重新创建 Java 让我心痛。)还有其他方法可以做到这一点吗?

0 投票
4 回答
168 浏览

python - python中的变量类型检测

我正在研究在python(2.5+)中检测变量类型(列表与字符串)的方法,并遇到了一些其他似乎过于复杂的答案。

我发现一个可以做

获取包含类名的字符串。如果有的话,这有什么问题?不是便携吗?什么时候会失败?

0 投票
0 回答
51 浏览

c++ - 有效运行时定义类型的惯用语,互操作的域限制

严格来说,类型是 C++ 中的编译时构造。然而,有时对象的一些常量运行时特性被有效地定义为运行时类型。

例如,如果有一个几何向量,其中,由于框架限制,尺寸仅在运行时已知(否则我会将尺寸设为模板参数),例如从文件中读取。

维度是运行时这一事实并不意味着应该能够比较、分配或组合具有不同维度的向量。如果想在代码中引入这种逻辑,就必须限制一堆操作。这可以通过断言或抛出来完成,仅在运行时。

所以,例如,一个人会实现这个,

vec实施std::vector后尺寸不会改变。

这样做的问题是,最终会在所有函数中编写限制。

我的问题是,是否有任何习惯用法或工具可以通过限制(在运行时)使用不兼容对象执行的操作,特别是帮助编写更少重复的代码来帮助解决这个问题。

请注意,我不能使用std::array<double, 4>or3>因为4and3可能是运行时变量。

这个有效运行时类型的概念有名字吗?有没有被调查?


可能发生这种情况的其他示例:

1) 想象一下拥有可变大小的 NxN 数组并尝试定义数学加法。N 将是运行时的(甚至在构造后是常数),并且必须检查一个人没有添加不同大小的数组,还希望任何不兼容的比较都会触发错误。

2) 更一般地说,这个哲学问题可以出现在具有固定成员的类中。这有点做作,但假设一个人被迫拥有const成员

可以限制这一点:

我想象的唯一自动解决方案是系统地重载成员类型中的某些运算符(例如operator=() const)以强制执行此操作。

但是其中一个取决于(依赖)特殊成员类型,例如:

后来为了保持一致和系统,人们会写:

0 投票
1 回答
549 浏览

json - 如何在 Swift 中创建两个通用 T:Codable 结构的差异?

给定:我有两个相同类型的结构,符合 Codable 协议。结构可以是多级的(嵌套属性,当然也符合 Codable)。该类型在实现时是未知的,所以我认为它是通用的,符合 Codable。

一个对象是“base”(例如,从服务器接收),第二个(实际上是“base”的副本),但在应用程序内部进行了修改。

目的是:发送保存新数据的请求,但仅发送两个结构的“差异”。因此,只有不同的字段应该出现在结果 JSON 中。

为两个结构获取 JSON 字符串并使用它们进行操作的直接方法是可以理解的,但似乎是最后机会的方法......

我已经尝试过使用 Mirror 和递归的方法,但现在已经设法使其仅适用于第一级 - 在第二级嵌套上,我丢失了嵌套属性的类型(如果是结构或数组),并且无法转换那时就...

我想知道是否可以使用自定义编码器以某种方式制作它?

PS:泛型类型的所有属性都应该是可选的,所以不应该提供任何显式的初始化器。

0 投票
4 回答
687 浏览

java - 如何在泛型重载java中解析运行时类型

我想用泛型在运行时解析类型。这是我的代码。

如何在泛型类中使用/调用方法 print(String string),print(Integer integer)。

即使我尝试过

这是使用对象签名调用相同的方法。

还尝试了以下操作,它也使用对象签名调用相同的方法。

对于所有上述情况,输出将是。

以下是我想要的

请教育我。