У вас есть три варианта. Вы можете передать вызывающий объект в метод bar:
Class A {
foo() {
new B().bar(this);
}
}
Class B {
bar(A caller) {
...
}
}
Или вы можете сделать класс B внутренним классом класса A:
Class A {
foo() {
new B().bar();
}
Class B {
bar() {
A caller=A.this;
...
}
}
}
Если вам нужен только класс, а не экземпляр объекта, у вас есть третий выбор. Используя Thread.currentThread().getStackTrace()
, вы можете получить полное имя класса в произвольной точке стека и использовать отражение для получения экземпляра класса. Но это так ужасно, вы должны либо исправить свой дизайн, либо (если вы пишете свой собственный отладчик или что-то подобное) попробовать более простой проект, пока вы не узнаете достаточно о Java, чтобы выяснить подобные вещи для себя ... *