![](/img/trans.png)
[英]determine whether a class's superclass implements a certain interface in 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.