问题标签 [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 投票
2 回答
916 浏览

java - Object[] 如何可克隆

这给出了真实的 o/p。我不明白为什么?

0 投票
6 回答
33588 浏览

java - Java - 是否有像 instanceof 这样的“子类”?

我重写了一个 equals() 方法,我需要知道该对象是否是 Event 子类的实例(Event 是超类)。我想要“obj subclassof Event”之类的东西。这怎么能做?

提前致谢!

0 投票
6 回答
121016 浏览

java - 如何在不使用反射的情况下查看对象是否为数组?

如果一个对象是一个不使用反射的数组,我如何在 Java 中查看?以及如何在不使用反射的情况下遍历所有项目?

我使用 Google GWT,所以我不允许使用反射 :(

我很想在不使用反射的情况下实现以下方法:

顺便说一句:我也不想使用 JavaScript 以便在非 GWT 环境中使用它。

0 投票
7 回答
39732 浏览

java - instanceof 被认为是不好的做法吗?如果是这样,在什么情况下 instanceof 仍然更可取?

多年来,我尽量避免instanceof。在适用的情况下使用多态性或访问者模式。我想它只是在某些情况下简化了维护......还有其他应该注意的缺点吗?

但是,我确实在 Java 库中到处看到它,所以我想它有它的位置吗?在什么情况下更可取?这是不可避免的吗?

0 投票
2 回答
4157 浏览

java - 反射:将对象强制转换为子类而不使用 instanceof

我有这个简单的接口/类:

还有一个实用程序类:

现在,主要课程:

输出是

我会p.handler(m)调用该方法p.handler(m:Message1)

我不想使用“手动”命令instanceof,因为我有很多情况:


如果我打电话m.getClass(),我会获得“mypackage.Message1”,所以是子类而不是超类。

我尝试使用此代码(使用反射):

但输出是

所以,这是我的问题。我会在不使用“代码命令”istanceof 的情况下将超类对象运行时转换为子类对象。

我会这样的正确命令:

我怎样才能获得它?这是可能的?

0 投票
9 回答
77588 浏览

java - 在 Java 中避免使用 instanceof

拥有一系列“instanceof”操作被认为是“代码味道”。标准答案是“使用多态性”。在这种情况下我该怎么做?

基类有许多子类;他们都不在我的控制之下。类似的情况是 Java 类 Integer、Double、BigDecimal 等。

我确实可以控制 NumberStuff 等等。

我不想在几行就可以的情况下使用多行代码。(有时我会创建一个 HashMap 映射 Integer.class 到 IntegerStuff 的实例,BigDecimal.class 到 BigDecimalStuff 的实例等。但今天我想要一些更简单的东西。)

我想要这样简单的东西:

但是 Java 并不是这样工作的。

我想在格式化时使用静态方法。我正在格式化的东西是复合的,其中一个 Thing1 可以包含一个数组 Thing2s,而一个 Thing2 可以包含一个 Thing1s 数组。当我像这样实现我的格式化程序时遇到了一个问题:

是的,我知道 HashMap 并且更多的代码也可以解决这个问题。但相比之下,“instanceof”似乎如此可读和可维护。有没有简单但不臭的东西?

2010 年 5 月 10 日添加的注释:

事实证明,未来可能会添加新的子类,而我现有的代码将不得不优雅地处理它们。在这种情况下,Class 上的 HashMap 将不起作用,因为找不到 Class。一连串的 if 语句,从最具体的开始到最一般的结束,可能是最好的:

0 投票
3 回答
264 浏览

java - 为什么 instanceof 有时似乎在静态泛型函数中工作?

问候。这是我在这个网站上的第一篇文章。

我认为由于type erasure,人们不能期望下面的代码能够编译,事实上,它没有在早期版本的 Eclipse 上编译。我的理解是instanceof是一个运行时运算符,并且不知道泛型类型将在运行时编译掉:

但是,我很惊讶地看到您的一个线程实际上在答案中包含了一些类似这样的代码,而我最新的 Eclipse(Windows 上的 Galileo 与 JVM 1.6 rev 20)对此非常满意——而且它也可以工作。(我确实注意到有人说它在 Eclipse 上工作,但在该线程中的另一个 IDE/JDK 中没有,但不记得具体细节。)

有人可以解释它为什么起作用,更重要的是,因为我必须指导我的学生,是否应该期望它在未来起作用。

谢谢你。(我希望代码格式正确 - 从我的角度来看,它看起来正确缩进并且没有标签。)

0 投票
1 回答
141 浏览

java - 具有两个参数的方法,这两个参数都需要双重调度

假设我有一个有两个参数的方法。我一直在实施它们:

如您所见,它不是一个非常漂亮的解决方案。我计划使用双重调度来实现,但是有两个参数都需要双重调度,恐怕我有点难过。请有任何想法。

我在java中实现顺便说一句。

0 投票
1 回答
956 浏览

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

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

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

但我不知道将 com.HTMLReceiver字符串从字符串转换为实际类型的方法,以便我可以使用instanceof它。

有办法吗?

0 投票
2 回答
6634 浏览

java - 在线程之间传递对象时是否可以使用instanceof?

我遇到了 instanceof 工作的问题,然后它没有。深入细节很困难,但我认为这可能是问题所在:

读到这里:http ://www.theserverside.com/news/thread.tss?thread_id= 40229(搜索Thread.currentThread),似乎暗示,即使这两个对象是同一个类,如果你传递它们在具有不同类加载器的线程之间,instanceof(和 isAssignableFrom)可能仍然会失败。

这当然可以解释我的行为,但我想知道是否有人可以验证它?

(我希望讨论开始时链接的文章仍然可用,但似乎不是。)