簡體   English   中英

如何測試一個Java類是否在運行時擴展了另一個?

[英]How to test if one java class extends another at runtime?

如何測試a是否是b的子類?

Class<?> a = A.class;
Class<?> b = B.class;

您是否在尋找:

Super.class.isAssignableFrom(Sub.class)

如果您想知道某個Class是否擴展了另一個,請使用Class#isAssignableFrom(Class) 以您的示例為例:

if(B.class.isAssignableFrom(A.class)) { ... }

如果您對實例是否為特定類型感興趣,請使用instanceof

A obj = new A();
if(obj instanceof B) { ... }

請注意,如果類/實例是類型層次結構的成員,並且不限於直接超類/子類關系,則它們將返回true 例如:

// if A.class extends B.class, and B.class extends C.class
C.class.isAssignableFrom(A.class); // evaluates to true
// ...and...
new A() instanceof C; // evaluates to true

如果要檢查直接的超類/子類關系, Tim也提供了答案

您想知道b 是否可從 a 分配

b.isAssignableFrom(a);

另外,如果您想知道ab的直接子類:

a.getSuperclass().equals(b);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM