我如何检查我正在处理的是什么类型?

How do I check what type I am dealing with?

简单地说:我正在寻找 Java 的 instanceof.

的 Haxe 等价物

这是我的具体问题:

我有一个 class Tile,它包含一个类型为 Unit 的字段 content 和一个函数 get_content() return当前存储的对象。 Unit 是在 3 classes PlayerMonsterItem 中实现的接口。此外,我有更具体的怪物(如 DragonBeast),我在它们自己的 class 中定义了每个怪物。他们每个人都扩展了 Monster class.

现在我想根据 tile.get_content() 编辑的对象 return 的类型执行不同的代码。例如,如果它是从 Monster class myFunction1() 继承的任何对象被调用,如果它是任何扩展 Item class myFunction2() 被调用。

我将如何实现这种行为?

提前谢谢你。

编辑:

我发现 if (Type.typeof(tile.get_content()) == Monster) 似乎是可行的方法,但是 return 对于继承自 Monster class 的类型是否也是如此,或者仅适用于泛型的对象 class Monster?

有两个:

if (tile.get_content() is Monster)
//and
if (Std.isOfType(tile.get_content(), Monster))

按照 George 的建议,应该使用 Std.isOfType()

从编辑中回答我自己的第二个问题:确实 return true 继承自 classes 的对象指定 class.

因此,我的具体示例的完整代码是

if (Std.isOfType(tile.get_content(), Monster)) {
   myFunction1();
} else if (Std.isOfType(tile.get_content(), Item)) {
   myFunction2();
}