Анонимные внутренние классы компилируются в файлы внешнийКласс$n.class. На месте внешнего класса, соответственно, название обрамляющего класса, внутри которого описывается анонимный внутренний класс. На месте n число от 1 до количества анонимных классов. Всё станет понятно когда Вы скомпилируете код и проследите за компиляцией файлов в директории проекта.
public class TestAnonym { private static Runnable anon; private static Runnable anon2; private static Runnable anon3; public static void main(String[] args) { anon = new Runnable() { public void run() { while(true){ try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } }; anon2 = new Runnable() { public void run() { while(true){ try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } }; anon3 = new Runnable() { public void run() { while(true){ try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } }; System.out.println(anon.getClass().getName()); TestAnonym.InnClass inn = new TestAnonym().new InnClass(); System.out.println(inn.r.getClass().getName()); InnStaticClass isc = new InnStaticClass(); System.out.println(isc.r.getClass().getName()); } class InnClass{ public Runnable r = new Runnable() { public void run() { System.out.println("Hello from InnClass"); } }; } static class InnStaticClass{ public Runnable r = new Runnable() { public void run() { System.out.println("Hello from InnStaticClass"); } }; } } Вывод: TestAnonym$1 TestAnonym$InnClass$1 TestAnonym$InnStaticClass$1
Комментарии: