Java 8 ссылки на методы, вызываемые для локальной переменной

Я нахожусь в процессе изучения Java 8, и я столкнулся с чем-то странным.

Рассмотрим следующий фрагмент:

private MyDaoClass myDao;

public void storeRelationships(Set<Relationship<ClassA, ClassB>> relationships) {
    RelationshipTransformer transformer = new RelationshipTransformerImpl();

    myDao.createRelationships(
            relationships.stream()
            .map((input) -> transformer.transformRelationship(input))
            .collect(Collectors.toSet())
    );
}

В основном мне нужно отобразить входной набор с именемrelationships к другому типу, чтобы соответствовать API DAO, который я использую. Для преобразования я хотел бы использовать существующийRelationshipTransformerImpl класс, который я создаю как локальную переменную.

Теперь вот мой вопрос:

Если бы я должен был изменить вышеуказанный код следующим образом:

public void storeRelationships(Set<Relationship<ClassA, ClassB>> relationships) {
    RelationshipTransformer transformer = new RelationshipTransformerImpl();

    myDao.createRelationships(
            relationships.stream()
            .map((input) -> transformer.transformRelationship(input))
            .collect(Collectors.toSet())
    );

    transformer = null;  //setting the value of an effectively final variable
}

Я бы, очевидно, получил ошибку компиляции, так как локальная переменнаяtransformer больше не "эффективно окончательный". Однако, если заменить лямбду ссылкой на метод:

public void storeRelationships(Set<Relationship<ClassA, ClassB>> relationships) {
    RelationshipTransformer transformer = new RelationshipTransformerImpl();

    myDao.createRelationships(
            relationships.stream()
            .map(transformer::transformRelationship)
            .collect(Collectors.toSet())
    );

    transformer = null;  //setting the value of an effectively final variable
}

Тогда я больше не получаю ошибку компиляции! Почему это происходит? Я думал, что два способа написания лямбда-выражения должны быть эквивалентны, но явно происходит нечто большее.

Ответы на вопрос(3)

Ваш ответ на вопрос