Given the following test case:
```
import java.util.function.Supplier;
interface Main {
interface X<T> {
X<T> self();
}
static X<?> makeX() {return null;}
static <R> X<R> create(Supplier<? extends R> supplier) {return null;}
static X<X<?>> methodRef() {
return create(Main::makeX).self();
}
static X<X<?>> lambda() {
return create(() -> makeX()).self();
}
}
```
javac reports an error for the method reference but not for the lambda. There should be no difference here (error in both cases)
reported by Tagir at: https://mail.openjdk.org/pipermail/compiler-dev/2025-October/031680.html
```
import java.util.function.Supplier;
interface Main {
interface X<T> {
X<T> self();
}
static X<?> makeX() {return null;}
static <R> X<R> create(Supplier<? extends R> supplier) {return null;}
static X<X<?>> methodRef() {
return create(Main::makeX).self();
}
static X<X<?>> lambda() {
return create(() -> makeX()).self();
}
}
```
javac reports an error for the method reference but not for the lambda. There should be no difference here (error in both cases)
reported by Tagir at: https://mail.openjdk.org/pipermail/compiler-dev/2025-October/031680.html
- csr for
-
JDK-8369518 Compilation mismatch for equivalent lambda and method reference
-
- Proposed
-
- links to
-
Review(master) openjdk/jdk/27737