加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – `isInstanceOf`如何工作?

发布时间:2020-12-16 09:37:48 所属栏目:安全 来源:网络整理
导读:假设我们有: class Bclass A extends Btrait T 那就是: val a: A with T = new A with T a.isInstanceOf[B] // result is true ! 是对的说,isInstanceOf方法检查,如果至少有一个类型(不是所有类型)匹配右侧的子类型关系? 首先看,我认为A类与T的值不能
假设我们有:

class B
class A extends B
trait T

那就是:

val a: A with T = new A with T 
a.isInstanceOf[B]  // result is true !

是对的说,isInstanceOf方法检查,如果至少有一个类型(不是所有类型)匹配右侧的子类型关系?

首先看,我认为A类与T的值不能是B的子类型,因为A和T不是B的子类型。但是A或T是B的子类型 – 是对吗?

解决方法

isInstanceOf查看继承链中是否存在相应的条目。 A与T的链包括A,B和T,所以a.isInstanceOf [B]必须为真。

编辑:

实际上,生成的字节代码调用javas instanceof,所以它将是java中的一个instanceof B。像A.isInstanceOf [A与T]一样更复杂的一个电话会是(A的一个例子)&& (T的一个实例)。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读