On Thu, 18 Apr 2024 05:54:17 GMT, Adam Sotona <asot...@openjdk.org> wrote:

>> Current implementation of `LambdaMetafactory` does not allow to use lambdas 
>> in hidden classes. Invocation throws `NoClassDefFoundError` instead.
>> 
>> This patch includes lambda implementation in a hidden class under the 
>> special handling of `useImplMethodHandle`.
>> The patch also fixes `j/l/i/defineHiddenClass/BasicTest::testLambda` to 
>> correctly cover this test case.
>> 
>> Please review.
>> 
>> Thanks,
>> Adam
>
> Adam Sotona has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   Update 
> src/java.base/share/classes/java/lang/invoke/InnerClassLambdaMetafactory.java
>   
>   Co-authored-by: Mandy Chung <mandy.ch...@oracle.com>

This doesn’t fix the case where the lambda is created from an instance method, 
e.g.:


import java.util.function.Supplier;

public class HiddenLambda implements HiddenTest {
        public String test() {
                Supplier<String> s = this::toString;
                return s.get();
        }

        public String toString() {
                return getClass().getName();
        }
}

-------------

PR Comment: https://git.openjdk.org/jdk/pull/18810#issuecomment-2083240740

Reply via email to