Type和class以及比较是相等关系

本文探讨了Java中的Type接口和Class类之间的关系,并详细解释了instanceof和equals在检查对象类型时的区别。文章指出,Type是Class的父接口,而Class是Type的具体实现。此外,文章还分析了instanceof和isInstance操作符在处理继承关系时的不同之处,以及==和equals在比较Class对象时的适用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

Type是Class的父接口。
Class是Type的子类。

instanceof

instanceof操作符用于判断一个引用类型所引用的对象是否是一个类的实例。

  public  void instanceOf(Object object) {

        /**
         *  ==
         */
        if(Long.class == object.getClass()){
            System.out.println("Long.class == object.getClass()");
        }

        /**
         * equals
         */
        if(Long.class.equals(object.getClass()) ){
            System.out.println("Long.class.equals(object.getClass()) ");
        }

        /**
         * instance Of
         */
        if(object instanceof  Long){
            System.out.println("object instanceof  Long");
        }
    } 

== 和 equals比较的实际的Class类,没有考虑继承,instanceof 和 isInstance考虑继承


 
class  Father{}
class  Son extends  Father{}


public void fatherAndSon(){
    Father son = new Son(); //和 Son son = new Son(); 一样
    Father father = new Father();

    //son.getClass() ==  father.getClass() :false
    System.out.println("son.getClass() ==  father.getClass() :" +(son.getClass() == father.getClass()) );

    //son.getClass().equals(father.getClass()) :false
    System.out.println("son.getClass().equals(father.getClass()) :" +(son.getClass().equals(father.getClass())) );

    //son  instanceof Father :true
    System.out.println("son  instanceof Father :" +(son  instanceof Father ));

    //father  instanceof Son :false   //父类不能  instanceof  子类
    System.out.println("father  instanceof Son :" +(father  instanceof Son ));

    //father  instanceof Father :true
    System.out.println("father  instanceof Father :" +(father  instanceof Father ));

    //son.getClass().isInstance(father):false  //子类不能 isInstance 父亲
  System.out.println("son.getClass().isInstance(father):"+son.getClass().isInstance(father));

    //father.getClass().isInstance(son):true
  System.out.println("father.getClass().isInstance(son):"+father.getClass().isInstance(son));

    //son.getClass().isInstance(son)true
  System.out.println("son.getClass().isInstance(son)"+son.getClass().isInstance(son));

}

@Test
public void testFatherAndSon(){
    fatherAndSon();
}



ContactAuthor

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值