Java 中的 Class
類的 isAssignableFrom
方法用於判斷一個類或者介面是否可以被賦值給另一個類或者介面。這在判斷類之間的繼承關係或介面的實現關係時非常有用。
方法簽名
public boolean isAssignableFrom(Class<?> cls)
功能描述
- 用途:
isAssignableFrom
用於判斷呼叫此方法的類物件(即某個類A
的Class
物件)和指定的類物件(即某個類B
的Class
物件)之間是否存在可賦值關係。 - 返回值:
- 返回
true
表示類B
的物件可以賦值給類A
的引用(即A
是B
的超類或介面)。 - 返回
false
表示類B
的物件不能賦值給類A
的引用。
- 返回
使用場景
- 判斷類與類之間的繼承關係。
- 判斷類與介面之間的實現關係。
- 動態型別檢查,比如在反射中決定一個物件是否可以被某個變數引用。
示例
public class Example {
public static void main(String[] args) {
// 父類
Class<?> superclass = Number.class;
// 子類
Class<?> subclass = Integer.class;
boolean result = superclass.isAssignableFrom(subclass);
System.out.println("Is Integer assignable from Number? " + result);
// 輸出: Is Integer assignable from Number? true
}
}
理解要點
A.isAssignableFrom(B)
相當於檢查B
是否可以安全地轉型為A
。- 這意味著,如果
B
是A
的子類或實現類,那麼isAssignableFrom
會返回true
。 - 該方法特別適用於反射和框架開發中,需要動態判斷型別關係的場景。
透過 isAssignableFrom
,開發者可以更靈活地操控和判斷 Java 中的型別之間的關係,尤其是在執行時。