簡體   English   中英

確定Class是否在Java中實現接口

[英]Determine if a Class implements a interface in Java

我有一個Class對象。 我想確定Class對象表示的類型是否實現了特定的接口。 我想知道如何實現這一目標?

我有以下代碼。 基本上它的作用是獲取指定包中所有類的數組。 然后我想通過數組並將實現接口的Class對象添加到我的地圖中。 問題是isInstance()將一個對象作為參數。 我無法實例化一個接口。 所以我對此感到很茫然。 有任何想法嗎?

Class[] classes = ClassUtils.getClasses(handlersPackage);
for(Class clazz : classes)
{
    if(clazz.isInstance(/*Some object*/)) //Need something in this if statement
    {
        retVal.put(clazz.getSimpleName(), clazz);
    }
}

你應該使用isAssignableFrom

if (YourInterface.class.isAssignableFrom(clazz)) {
    ...
}

您可以使用以下函數來獲取所有已實現的接口

Class[] intfs = clazz.getInterfaces();

您可以使用class.getInterfaces()然后檢查接口類是否在那里。

Class someInterface; // the interface you want to check for 
Class x; // 
Class[] interfaces = x.getInterfaces();

for (Class i : interfaces) {
    if (i.toString().equals(someInterface.toString()) {
        // if this is true, the class implements the interface you're looking for
    }
}

您還可以設置添加“.class”的實例

Class[] classes = ClassUtils.getClasses(handlersPackage);
for(Class clazz : classes)
{
    if(Interface.class.isAssignableFrom(clazz))
    {
        retVal.put(clazz.getSimpleName(), clazz);
    }
}

暫無
暫無

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

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