Class的isAssignableFrom方法


Class類的isAssignableFrom是個不常用的方法,感覺這個方法的名字取得不是很好,所以有必要在此解析一下,以免在看源碼時產生歧義,這個方法的簽名如下:

public native boolean isAssignableFrom(Class<?> cls);

由方法簽名可見是一個本地方法,即C代碼編寫的。

以下是JDK中的注釋:

Determines if the class or interface represented by this Class object is either the same as,  

or is a superclass or superinterface of, the class or interface represented by the specified Class parameter.

It returns true if so; otherwise it returns false.

If this Class object represents a primitive type, this method returns true if the specified Class parameter is exactly this Class object; otherwise it returns false.

意思如下:

有兩個Class類型的類象,一個是調用isAssignableFrom方法的類對象(后稱對象a),以及方法中作為參數的這個類對象(稱之為對象b),這兩個對象如果滿足以下條件則返回true,否則返回false:

    a對象所對應類信息是b對象所對應的類信息的父類或者是父接口,簡單理解即a是b的父類或接口

    a對象所對應類信息與b對象所對應的類信息相同,簡單理解即a和b為同一個類或同一個接口

測試代碼:

//說明:Protocol是接口,DubboProtocol是Protocol的實現
Class protocolClass = Protocol.class ;   
Class dubboProtocolClass
= DubboProtocol.class ; protocolClass.isAssignableFrom(dubboProtocolClass )) ; //返回true protocolClass.isAssignableFrom(protocolClass )) ; //返回true dubboProtocolClass.isAssignableFrom(protocolClass )) ; //返回false

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM