В классе я пытаюсь определить, кто первоначально вызвал цепочку вызовов, используя трассировку стека потока:
StackTraceElement trace = Thread.getStackTrace();
for (int index = 3; index < trace.length; index++ ) {
String className = trace[index].getClassName();
Теперь я знаю, что вызов всегда будет инициироваться супертипом MyObject
, но я хотел бы знать, какой подкласс фактически начал вызов для целей регистрации / аудита.
Сначала я пытаюсь выяснить, могу ли я логически сопоставить суперклассы, но даже это не помогает;Я перепробовал все 4 из следующего, но все они, похоже, возвращают false:
Пошагово, я вижу, что нахожусь в цикле с правильным className , который является моимдочерний элемент, который расширяет MyObject
if (Class.forName(className).isAssignableFrom(MyObject.class)) {
if (MyObject.isAssignableFrom(Class.forName(className))) {
if (Class.forName(className).instanaceOf(MyObject.class)) {
if (MyObject.instanaceOf(Class.forName(className))) {
Как еще я могу проверить, если имя моего класса расширяет определенного родителя?