相关疑难解决方法(0)

instanceof和Class.isAssignableFrom(...)有什么区别?

以下哪项更好?

a instanceof B
Run Code Online (Sandbox Code Playgroud)

要么

B.class.isAssignableFrom(a.getClass())
Run Code Online (Sandbox Code Playgroud)

我所知道的唯一区别是,当'a'为null时,第一个返回false,而第二个抛出异常.除此之外,他们总是给出相同的结果吗?

java reflection instanceof

441
推荐指数
9
解决办法
25万
查看次数

instanceof运算符是否会产生大量开销?为什么?

我的项目中有一位同事,他深深反对instanceof运营商的使用,因为它"产生了大量的开销",原因是什么?这是真的吗?

有没有其他方法来检查对象的类型而不是使用它?

因为我发现它在某些场合非常有用.

java optimization casting

5
推荐指数
1
解决办法
6134
查看次数

Scala中模式匹配的速度有多快

我是Scala的新手.当我通过阅读其他人编写的Scala代码来学习它时,我在Scala代码中发现的与其他语言不同的一个最显着特征是它的模式匹配.

与此同时,我感受到它带来的便利性和表现力,我不禁对它背后的潜在性能成本感到好奇 - 一般来说,速度有多快match?

首先,没有"高级"功能,例如匹配构造函数的参数,match在Scala,IMO中,是switch-case其他语言的对应物.例如,

color match {
  0 => println "color is red!"
  1 => println "color is green!"
  2 => println "color is blue!"
}
Run Code Online (Sandbox Code Playgroud)

作为一个新手,我想知道上面的代码是否与if-else语句中的等效代码一样快?

其次,现在恢复这些"高级"功能,例如:

expr match {
  Animal(name) => ...
  Animal(name, age) => ...
  Animal(_, _, id) => ...
}
Run Code Online (Sandbox Code Playgroud)

至于上面的代码或匹配的其他功能(列表匹配,配对匹配等),我很好奇Scala如何实现这些花哨的用法?最重要的是,我能期望这些代码有多快?(比方说,它们仍然和match第一种情况一样快吗?或者可能稍微慢一些?或者由于使用某些技术如反射而极慢?)

提前致谢!

scala

5
推荐指数
1
解决办法
990
查看次数

如何在现代JVM实现中实现instanceof?

由于在其他线程中完成了基准测试(参见/sf/answers/27833221/),因此可以看出Java 6中的instanceof实际上非常快.这是如何实现的?

我知道对于单继承,最快的想法是使用一些嵌套间隔编码,其中每个类维持[低,高]间隔,而instanceof只是间隔包含测试,即2个整数比较.但它是如何制作接口的(因为区间包含仅适用于单继承)?如何处理类加载?加载新的子类意味着必须调整很多间隔.

java implementation jvm instanceof

2
推荐指数
1
解决办法
1775
查看次数