假设我有这个(假设名称变量是“receiver”):
if (!(receiver instanceof com.HTMLReceiver)) {
throw new com.IllegalArgumentException(
name + " is not an instance of com.HTMLReceiver.");
}
我想将这段代码分解成一个通用方法,这样我就可以这样调用它:
Helper.checkInstance(receiver, "com.HTMLReceiver");
但我不知道如何将 com.HTMLReceiver
从字符串转换为其实际类型,因此我可以在其上使用 instanceof
。
有办法吗?
最佳答案
我会这样调用它:
Helper.checkInstance(receiver, com.HTMLReceiver);
这将不允许您打印类型名称(“com.HTMLReceiver”)。
或:
Helper.checkInstance(receiver, com.HTMLReceiver, "com.HTMLReceiver");
您在打印中使用用户字符串。
注意同一个类型可以有多个类型名
var foo = com.HTMLReceiver;
foo
和 com.HTMLReceiver
是同一事物的名称。
JavaScript 本身无法从一个类型转到另一个类型名称。
如果你只传入String,我认为唯一通用的解决方案是eval。
关于javascript instanceof 从字符串名称获取类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2901928/