美文网首页
类实例对象的class类型却不属于该类,何解?

类实例对象的class类型却不属于该类,何解?

作者: linyb极客之路 | 来源:发表于2021-10-12 14:46 被阅读0次

前言

标题可能会让人一头雾水,直接上例子

image

如果我们在代码中,执行如下内容

server instanceof MvpServer

它返回的东西会是啥,如果得出正确答案的朋友,下面内容就可以不用看了。

答案是


image

当时看到这个答案,我真的一脸懵逼,还一度怀疑是我idea问题

排查

像这种问题,有时候真的得靠平时的积累了,类是由什么进行加载?答案是类加载器,即使类包名一样,类名字一样,如果你是由不同的类加载器进行加载,则该类也是不一样。因此我们就可以优先从类加载器排查起

image
在这里插入图片描述

从图片就很容易看出来,server和MvpServer的类加载器不一样。server他这个类加载器是spring devtools这个包提供的。因此解决的思路就很简单,就查下项目中是否引入

    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>

有的话,可以直接去掉了,避免对项目产生影响。如果你确实不想去掉,你可以把当前整个线程的类加载器,都设置成spring-boot-devtools的类加载器,可以通过

  Thread.currentThread().setContextClassLoader();

当我们把类加载都改成一样后,我们再来看下效果

image
image
image

总结

可能我们平时会背一些八股文,类加载器比如boostrap classloader、ext classloader、app classloader啥的,但有时候真的排查起问题,就会忽略了

相关文章

  • 类实例对象的class类型却不属于该类,何解?

    前言 标题可能会让人一头雾水,直接上例子 如果我们在代码中,执行如下内容 它返回的东西会是啥,如果得出正确答案的朋...

  • Java反射机制

    万事万物皆对象 在java中类也是对象,是Class类的实例对象,这个对象称为该类的类类型 例如:现在有个类叫Sm...

  • iOS-浅谈OC中对象的类型

    目录 OC对象的类型Instance对象(实例对象)----实例(instance)对象内存结构Class对象(类...

  • Python学习笔记二十四( 元类 )

    __class__属性 __class__属性可以查看对象的类型. Person 类的实例对象person 的类...

  • Java反射——Class类的使用

    一、获取Class的实例对象(类类型)的三种表示方式 万事万物皆对象, 类也是对象,是Class类的实例对象,这个...

  • OC对象类型浅析

    OC中对象类型的分类 OC中对象类型可以分为如下三类: instance 实例对象 class 类对象 meta-...

  • OC中的class方法

    实例对象的class方法 实例对象的class方法返回的是该实例对象的类对象 类对象的class方法 类对象的cl...

  • 小码哥底层原理笔记:OC对象的分类(二)

    前面一篇简单的介绍了OC对象的三种类型,instance实例对象,class类对象,meta-class元类对象。...

  • ruby类总结

    类 1.new 实例化对象 3. .class查看对象属于哪个类 4. instance_of? 判断对象是否属于...

  • 获取Class对象的3种方式

    1、调用某个对象的getClass()方法,以获取该类的Class对象 2、调用某个类的class属性,以获取该类...

网友评论

      本文标题:类实例对象的class类型却不属于该类,何解?

      本文链接:https://www.haomeiwen.com/subject/qlgdoltx.html