У вас есть три варианта. Вы можете передать вызывающему объект в метод бар:
Class A {
foo() {
new B().bar(this);
}
}
Class B {
bar(A caller) {
...
}
}
Или вы можете сделать класс B внутренний класс класса А:
Class A {
foo() {
new B().bar();
}
Class B {
bar() {
A caller=A.this;
...
}
}
}
Если все, что вам нужно, это класс, а не на экземпляр объекта , у вас есть третий выбор. Используя Thread.currentThread().getStackTrace()
, вы можете получить квалифицированное имя класса в произвольной точке стека и использовать отражение для получения экземпляра класса. Но это так ужасно, вы должны либо исправить свой дизайн, либо (если вы пишете собственный отладчик или что-то подобное) попробуйте более простой проект, пока вы не узнаете достаточно о java, чтобы понять, что это такое для себя ...
Это звучит так, как будто вы пытаетесь использовать это, чтобы решить определенную проблему. Можете ли вы рассказать нам, какую проблему вы пытаетесь решить? Вероятнее всего, это более легкое решение реальной проблемы. – 2008-11-27 04:36:35
@matt b: я собирался опубликовать только этот комментарий – Claudiu 2008-11-27 04:57:01