лямбда-выражение и связанный объект

.equals() сравнивает данные в классе (при условии, что функция реализована). == сравнивает местоположения указателя (расположение объекта в памяти).

== возвращает true, если оба объекта (NOT TALKING OF PRIMITIVES) указывают на экземпляр SAME. .equals() возвращает true, если два объекта содержат одни и те же данные equals() Versus == в Java

Это может вам помочь.

0
задан user2599052 25 February 2019 в 07:58
поделиться

1 ответ

Лямбда-выражение в исходном коде фактически не компилируется непосредственно в объект; это скорее инструкция к среде выполнения для создания лямбды. У JVM есть много свободы относительно лямбд; так что, возможно, речь о предметах неприменима в этом контексте.

Фактическое число создаваемых объектов сильно зависит от тела лямбды и реализации JVM.

В JLS § 15.27.4 упоминается следующее:

  • Новый объект не обязательно размещать при каждой оценке.
  • Объекты, созданные различными лямбда-выражениями, не обязательно должны принадлежать разным классам (например, если тела идентичны).
  • Каждый объект, полученный в результате оценки, не обязательно должен принадлежать одному и тому же классу (например, захваченные локальные переменные могут быть встроены).
  • Если «существующий экземпляр» доступен, его не нужно было создавать при предыдущей лямбда-оценке (например, он мог быть выделен во время инициализации окружающего класса).

См .:

0
ответ дан MC Emperor 25 February 2019 в 07:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: