Ste*_*ers 1 java reflection spring interface reflections
给定一个接口:
public interface A {};
Run Code Online (Sandbox Code Playgroud)
具有继承接口:
public interface B extends A {}
public interface C extends A {}
Run Code Online (Sandbox Code Playgroud)
如何以编程方式扫描以查找B
和C
?即如何做到这一点:
Type[] types = findAllSubInterfacesOfA(); // Returns [B.class, C.class]
Run Code Online (Sandbox Code Playgroud)
注意:我试图在这里找到接口,而不是类或实例。
以下代码段应该这样做。
public class FindSubinterfaces {
public static void main(String[] args) {
Class clazz = A.class;
Reflections reflections = new Reflections(new ConfigurationBuilder()
.setUrls(Arrays.asList(ClasspathHelper.forClass(clazz))));
Set<Class<? extends List>> subTypes = reflections.getSubTypesOf(clazz);
for (Class c : subTypes) {
if (c.isInterface()) {
System.out.println("subType: " + c.getCanonicalName());
}
}
}
}
interface A {
};
interface B extends A {
}
interface C extends A {
}
class CA implements A {
}
abstract class DC implements C {
}
Run Code Online (Sandbox Code Playgroud)
输出
subInterface: sub.optimal.reflections.B
subInterface: sub.optimal.reflections.C
Run Code Online (Sandbox Code Playgroud)