Czyli generalnie w metodach można definiować inne metody przy tworzeniu obiektów klas, które nie posiadają jeszcze definicji jakiejś metody? Dobrze rozumiem?
Nie. W metodzie możesz zrobić sobie klasę (anonimową lub nie), a w tej klasie możesz zrobić to co w każdej innej klasie oraz dodatkowo domknąć się na stanie z otaczających metod. Przykład z klasami nieanonimowymi https://www.ideone.com/xXr3ml :
/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
class Greeter {
void greet() {
System.out.println(Arrays.toString(args));
}
}
new Greeter().greet();
new Ideone().foo("me, of course");
}
void foo(String who) {
class Bar {
void baz() {
class Abc {
void xyz() {
System.out.println("foo(" + who + ").Bar.baz().Abc.xyz()");
}
}
new Abc().xyz();
}
}
new Bar().baz();
}
}
Wynik:
[]
foo(me, of course).Bar.baz().Abc.xyz()