2
我想測試一個類/接口正在實現哪些接口。測試類/接口實現哪些接口?
所以我有一個基本的接口Adapter
和一些基於它的接口(例如PermissionsAdapter
)。現在,我得到類型爲Adapter
一個變量,現在我想根據Adapter
這個變量是實現讓每一個接口。
一個簡單的實現:
import java.util.LinkedList;
import java.util.List;
public class Main {
private interface A { }
private interface BA extends A { }
private interface CA extends A { }
private interface X {}
private class IB implements BA { }
private class IC implements CA { }
private class IBC implements BA, CA { }
private class ICX implements CA, X { }
private class IBCX implements BA, CA, X {}
public Main() {
this.test(new IB());
this.test(new IC());
this.test(new IBC());
this.test(new ICX());
this.test(new IBCX());
}
private void test(A a) {
List<Class<? extends A>> result = this.getAdapterInterfaces(a);
System.out.print(a.getClass().getSimpleName() + "{");
for (Class<? extends A> class1 : result) {
System.out.print(class1.getSimpleName() + ", ");
}
System.out.println("}");
}
@SuppressWarnings("unchecked")
public List<Class<? extends A>> getAdapterInterfaces(A adapter) {
List<Class<? extends A>> result = new LinkedList<Class<? extends A>>();
Class<?>[] interfaces = adapter.getClass().getInterfaces();
for (Class<?> clazz : interfaces) {
if (A.class.isInstance(clazz)) {
result.add((Class<? extends A>) clazz);
}
}
return result;
}
public static void main(String[] args) {
new Main();
}
}
這裏是Adapter
接口A
和PermissionsAdapter
例如BA
和CA
是另一種適配器。 X
只是一個示例界面,列表不應包含。
而結果:
IB{}
IC{}
IBC{}
ICX{}
IBCX{}
因此,它似乎並沒有工作。現在我的錯誤在哪裏getAdapterInterfaces(A)
?我認爲這是考試,但是我如何測試,如果一個班級是A
的特定班級?
Fabian
啊謝謝!現在它工作正常。 – xZise 2011-06-07 00:55:53