javascript instanceof 从字符串名称获取类型

发布于 2024-09-02 14:56:13 字数 437 浏览 6 评论 0原文

假设我有这个(假设名称变量是“receiver”):

if (!(receiver instanceof com.HTMLReceiver)) {
    throw new com.IllegalArgumentException(
        name + " is not an instance of com.HTMLReceiver.");
}

我想将此代码分解为一个通用方法,这样我就可以这样调用它:

Helper.checkInstance(receiver, "com.HTMLReceiver");

但我不知道如何转换 < code>com.HTMLReceiver 从字符串到其实际类型,以便我可以在其上使用 instanceof

有办法吗?

Let's say I have this (assume the name variable is "receiver"):

if (!(receiver instanceof com.HTMLReceiver)) {
    throw new com.IllegalArgumentException(
        name + " is not an instance of com.HTMLReceiver.");
}

I'd like to factor this code out into a common method so I could call it like this:

Helper.checkInstance(receiver, "com.HTMLReceiver");

But I don't know of a way to convert the com.HTMLReceiver from a string to its actual type so I can use instanceof on it.

Is there a way?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

阳光下的泡沫是彩色的 2024-09-09 14:56:13

我将其称为:

Helper.checkInstance(receiver, com.HTMLReceiver);

这将不允许您打印类型名称(“com.HTMLReceiver”)。

或者:

Helper.checkInstance(receiver, com.HTMLReceiver, "com.HTMLReceiver");

您在打印中使用用户字符串。

请注意,同一类型可以有多个类型名称

var foo = com.HTMLReceiver;

foocom.HTMLReceiver 是同一事物的名称。

JavaScript 本身无法从类型转到类型名称。

如果只传入String,我认为唯一通用的解决方案是eval。

I would call it as:

Helper.checkInstance(receiver, com.HTMLReceiver);

This will not allow you print a type name ("com.HTMLReceiver").

or:

Helper.checkInstance(receiver, com.HTMLReceiver, "com.HTMLReceiver");

You use the user string in the print.

Note that the same type can have multiple type names

var foo = com.HTMLReceiver;

foo and com.HTMLReceiver are names for the same thing.

JavaScript has no way of going from type to type name itself.

If you only pass in the String, I think the only general solution is eval.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文