Что означает знак доллара в сгенерированных именах переменных при отладке Java в InteliJ IDEA? Это закрытие?

Что означает знак доллара в именах переменных при отладке Java в InteliJ? Это закрытие? Пожалуйста, смотрите изображение и фрагмент кода ниже.

Вот часть класса Stream:

public final Listener listen(final Handler<A> action) {
    return listen_(Node.NULL, new TransactionHandler<A>() {
        public void run(Transaction trans2, A a) {
            action.run(a);
        }
    });
}

Я подозреваю, что $1 в Stream$1@915 относится к замыканию, созданному в методе выше. Я не уверен, хотя. Кто-нибудь может это подтвердить? Или, если это не так, объясните, что означает знак доллара в этом сгенерированном имени?

Код взят из библиотеки Sodium Functional Reactive, которую я пытаюсь понять, как она работает.

1 ответ

Решение

Это ссылка на анонимный внутренний класс, генерируемый этой конструкцией типа замыкания. Как правило, внутренние классы компилируются и имя файла класса будет yourClassName$yourInnerClassName, В случае объявления анонимного внутреннего класса, поскольку вы не называете его явно, оно будет отображаться как сгенерированное имя с использованием чисел. Возможно, эта статья поможет?

Другие вопросы по тегам