问题标签 [instanceof]

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 回答
791 浏览

php - 为包装类操作 PHP-instanceof-operator

我想为一些类提供一个通用的包装类来拦截和操作一些方法调用。方法-调用-转发,拦截,目前没问题。但是想了一会儿,我发现了一个我没有解决方案的问题:我在我的应用程序中到处使用内置的 instanceof-operator。当然,这将不再起作用,因为包装器不是其中的类的实例。我想继续使用该运算符,而不是用其他函数替换它。

有没有办法解决这个问题?这个运算符是如何工作的?它是否调用了我可能能够在包装器中覆盖的类的核心功能?

我知道这不是操纵该运算符的真正“干净”的解决方案,但我认为这对我来说是最简单的解决方案。正如我们所知,PHP 中有很多东西不是那么干净...... :-)

谢谢你的回答,本

0 投票
7 回答
557 浏览

java - 使用 Java 的 instanceOf 是否符合“程序到接口”的设计原则?

如您所知,“程序到接口”设计原则广泛偏爱超类型而不是具体类型或实现。

在Java程序中使用instanceof从超类型派生具体类型是否符合原理?

在我的应用程序中,Storehouse 是一个抽象超类型类,具有几个私有变量和公共 getter 和 setter。

ConcreteStorehouseA 继承自 Storehouse,有很多具体的方法和变量。ConcreteStorehouseB 类似但不同。

我的应用程序收到一个仓库。但是,Storehouse 不是一个有用的类型。因为唯一真正有用的方法包含在具体类型中,所以我使用 instanceof 如下:

使用instanceof是否符合原理?

编辑:

本质上,该应用程序是桌面角色扮演游戏 Shadowrun 的骰子模拟器。具体类型是不同的测试类型——成功测试、反对测试、扩展测试——它们的成功运行都有非常不同的因素和参数。超类型本质上包含骰子池!

0 投票
4 回答
136609 浏览

java - instanceof 与 getClass( )

我看到使用getClass()and==运算符而不是运算符时性能有所提高instanceOf

是否有任何指导方针,使用哪一个getClass()instanceOf

给定一个场景:我知道要匹配的确切类,即StringInteger这些是最终类)等。

使用instanceOf操作员是不好的做法吗?

0 投票
5 回答
6533 浏览

java - 在这种情况下替代 instanceof 方法

您好,我想知道有什么更优雅的替代方案来代替这样的东西:

看看有什么替代方案...

谢谢你的建议。

编辑:基类可能有许多子类,而不仅仅是两个,它们的数量可能会随着时间增长

0 投票
1 回答
4965 浏览

java - 如何检查作为 Class 对象的参数的 instanceof?

我正在尝试构建一个通用类加载器。我需要根据方法参数检查我加载的类,以确定它们是否属于同一类。

该代码主要解释了我正在尝试做的事情。

这是如何实现的?

0 投票
2 回答
441 浏览

javascript - 想到更多古怪的 JavaScript 恶作剧

我刚刚通读了Mike Koss 关于 JavaScript 中的面向对象编程。他简要谈到了子分类,并谈到了“另一种子分类范式”。在这个例子之后,科斯写道......

不幸的是,这种技术不允许使用instanceof 运算符来测试超类的成员资格。但是,我们还有一个额外的好处,那就是我们可以从多个超类中派生(多重继承)

...这让我思考。多重继承的想法似乎很酷!所以我有两组问题:

  1. 多重继承的想法实用吗?真的实践了吗?有什么优点或缺点吗?
  2. 我将如何覆盖instanceof运算符以将其功能扩展到多重继承?
0 投票
1 回答
1069 浏览

android - 如何在 Android 中检查异常对象类型?

我想检查从函数返回的 Android 中的异常对象类型以及其他数据。我正在使用以下内容,但这也会触发子类 SSLPeerUnverifiedException,这是我不想发生的事情。

然后我将其更改为以下内容,但是我认为可能有更好的比较检查而不是比较字符串。

0 投票
1 回答
4399 浏览

jsf - JSF EL:instanceof 保留但尚未实现?

我在 JSF EL 中找到了 instanceof 运算符,但在使用时会引发异常。它显然是保留但没有实施?它什么时候(可能)可用,如果还没有比我目前使用的 JSF 1.2 更新的版本?

0 投票
24 回答
311044 浏览

java - 是否可以在 switch 语句中使用 instanceof 运算符?

我有一个使用开关盒作为instanceof对象的问题:

例如:我的问题可以用 Java 重现:

它将如何使用switch...case

0 投票
2 回答
674 浏览

java - 从 javax.swing.text 对 AbstractDocument.UndoRedoDocumentEvent 尝试 instanceof 时出现 IllegalAccessError

在我的源代码中,javax.swing.text.DefaultCaret.Handler.insertUpdate(DocumentEvent)我发现了以下几行(从第 1685 行开始):

但是当我尝试这个时:

它会给:

为什么我不能instanceof反对那个阶级,但DefaultCaret.Handler可以呢?

使用 java 版本 1.6.0_20


更新:

根据答案,我尝试了以下方法:

文件Foo.java

文件Outer.java

这工作正常并按预期打印“aww”。

请注意,这两个文件都在包中javax.swing.text。另请注意,这Foo.java已经javax.swing.text在我原来的问题中。

据我所知,包裹没有“密封”。rt.jar(包含包裹的)的清单javax.swing.text不包含“密封”。该命令Package.getPackage("javax.swing.text").isSealed()返回假。

所以我可以instance of反对我自己的内部类,但不能反对AbstractDocument.UndoRedoDocumentEvent,即使包中的其他类可以。

任何想法为什么会这样?