01: package org.ontoware.rdfreactor.runtime;
02:
03: public class ReflectionUtils {
04:
05: /**
06: * @param classA
07: * @param classB
08: * @return true if classA is equal to or has as a direct or indirect
09: * superclass classB. Or if it directely or indirectly implements B.
10: */
11: public static boolean hasSuperClass(Class<?> classA, Class<?> classB) {
12: // end recursion
13: if (classA.equals(classB))
14: return true;
15:
16: boolean super class = false;
17:
18: // check superclass
19: Class<?> super Class = classA.getSuperclass();
20: if (super Class != null) {
21: if (super Class.equals(classB))
22: super class = true;
23: else
24: // recursion
25: super class = hasSuperClass(super Class, classB);
26: }
27:
28: if (!super class) {
29: // check interfaces, recursively
30: Class<?>[] interfaces = classA.getInterfaces();
31: for (Class<?> interfaze : interfaces) {
32: if (interfaze.equals(classB))
33: return true;
34: else {
35: return hasSuperClass(interfaze, classB);
36: }
37: }
38: }
39:
40: return superclass;
41:
42: }
43: }
|