Например, когда у вас есть оператор switch, java создает переменную, которая начинается с $. Если вы хотите увидеть пример этого, загляните в java-отражение класса, в котором есть оператор switch. Вы увидите эти переменные, когда у вас есть хотя бы один оператор switch в любом месте класса.
Чтобы ответить на ваш вопрос, я не верю, что вы можете получить доступ (кроме рефлексии) к синтетическим классам.
Если вы анализируете класс, о котором ничего не знаете (с помощью рефлексии), и вам необходимо знать очень специфические и низкоуровневые вещи об этом классе, вы можете использовать методы отражения Java, связанные с классы. Единственное «использование» здесь - это получить больше информации о классе, чтобы правильно использовать его в своем коде.
(Если вы делаете это, вы, вероятно, создаете какую-то структуру, которую могли бы использовать другие разработчики.)
В противном случае, если вы не используете рефлексию, я не знаю практического использования синтетических классов.