Java中isAssignableFrom的用法

class1.isAssignableFrom(class2) 判定此 Class1 對象所表示的類或接口與指定的 Class2 參數所表示的類或接口是否相同,或是否是其超類或超接口。
如果是則返回 true;否則返回 false。
如果該 Class1 表示一個基本類型,且指定的 Class2 參數正是該 Class 對象,則該方法返回 true;否則返回 false。

1.class2是不是class1的子類或者子接口

2.Object是所有類的父類

package com.ghgcn.faceplus;


public class A {

    
    public static void main(String[] args) {
        A a = new A();
        B b = new B();
        A ba = new B();
        System.out.println("1-------------");
        System.out.println(A.class.isAssignableFrom(a.getClass()));  //true
        System.out.println(B.class.isAssignableFrom(b.getClass())); //true
        System.out.println(A.class.isAssignableFrom(b.getClass())); //true
        System.out.println(B.class.isAssignableFrom(a.getClass())); //false
        System.out.println(A.class.isAssignableFrom(ba.getClass())); //true
        System.out.println(B.class.isAssignableFrom(ba.getClass())); //true
        
        System.out.println("2-------------");
        System.out.println(a.getClass().isAssignableFrom(A.class)); //true
        System.out.println(b.getClass().isAssignableFrom(B.class)); //true
        System.out.println(a.getClass().isAssignableFrom(B.class)); //true
        System.out.println(b.getClass().isAssignableFrom(A.class)); //false
        System.out.println(ba.getClass().isAssignableFrom(A.class)); //false
        System.out.println(ba.getClass().isAssignableFrom(B.class)); //true
        
        
        System.out.println("3-------------");
        System.out.println(Object.class.isAssignableFrom(b.getClass()));   //true
        System.out.println(Object.class.isAssignableFrom("abc".getClass())); //true
        
        
        System.out.println("4-------------");
        System.out.println("a".getClass().isAssignableFrom(Object.class));  //false
        System.out.println("abc".getClass().isAssignableFrom(Object.class)); //false
    }
}

結果
1-------------
true
true
true
false
true
true
2-------------
true
true
true
false
false
true
3-------------
true
true
4-------------
false
false

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 國家電網公司企業標準(Q/GDW)- 面向對象的用電信息數據交換協議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 11,123評論 6 13
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,869評論 18 139
  • 一、Java 簡介 Java是由Sun Microsystems公司于1995年5月推出的Java面向對象程序設計...
    子非魚_t_閱讀 4,243評論 1 44
  • 昨天晚上組團去看了等了近10年的《魔獸》電影,因為故事情節太為龐大,要用一部電影的時間來詮釋,太過困難,作為從來沒...
    范韜閱讀 194評論 0 0
  • 世事如棋局局新,增廣上說的老話一點沒錯。老陸由千萬身價的老板一下就被搞成了身無分文。 但是沒人信。 老陸以沉穩,聰...
    蜀山袖手人閱讀 201評論 1 9