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