вспомогательный класс, вызываемый всеми остальными:
package de.scrum_master.app;
public class Other {
public void doOther() {}
}
Приложение драйвера со всеми видами внутренних классов:
Здесь мы имеем
- нестатический внутренний класс,
- статический внутренний класс,
- локальный внутренний класс,
- анонимный класс
- и, конечно, нормальный класс.
package de.scrum_master.app;
public class Application {
public String foo(int number) {
new Other().doOther();
return "foo";
}
public class MyInner {
public void doSomething() {
new Other().doOther();
}
}
public static class MyStaticInner {
public void doSomethingElse() {
new Other().doOther();
}
}
public static void main(String[] args) {
new Application().foo(11);
new Application().new MyInner().doSomething();
new Application.MyStaticInner().doSomethingElse();
class LocalInner {
public void doWhatever() {
new Other().doOther();
}
}
new LocalInner().doWhatever();
new Runnable() {
@Override public void run() {
new Other().doOther();
}
}.run();
}
}
Имена классов вызывающего журнала регистрации:
package de.scrum_master.aspect;
public aspect CallingClassLogger {
before(Object caller) : !within(CallingClassLogger) && call(* *(..)) && this(caller) {
System.out.println(caller.getClass().getName());
}
}
Журнал консоли:
de.scrum_master.app.Application
de.scrum_master.app.Application$MyInner
de.scrum_master.app.Application$MyStaticInner
de.scrum_master.app.Application$1LocalInner
de.scrum_master.app.Application$1
Ваш аспект напечатал бы что-то вроде
Application.java:5
Application.java:11
Application.java:17
Application.java:28
Application.java:35
, что не очень полезно для ИМО, если вас интересуют имена классов.