Class AsmQuery<ENV>

  • Type Parameters:
    ENV - Окружение передаваемое в лямбду
    All Implemented Interfaces:
    Query<ENV>

    public class AsmQuery<ENV>
    extends Object
    implements Query<ENV>
    Сериализация Java лямбды.

    Это клас по сути является абстрактным, и для реализации конечной функциональности требуется переопределить метод call(Fn1, SerializedLambda, LambdaDump)

    Данный класс по сути выполняет следующие функции

    1. Метода apply(Fn1) - получает байт код fn
    2. Полученный байт код передает в call(Fn1, SerializedLambda, LambdaDump)
     AtomicReference<LambdaDump> mdefRef = new AtomicReference<>();
     var res =
       new AsmQuery<IEnv>(){
           @Override
           protected  RES call(Fn<IEnv, RES> fn, SerializedLambda sl, LambdaDump dump){
               // Сохранение представления байт кода
               mdefRef.set(dump);
               return super.call(fn, sl, mdef);
           }
       }.apply(
           env0 -> env0.getUsers().filter(u -> u.getName().contains("Petrov"))
       );
     
    See Also:
    MethodDump
    • Constructor Detail

      • AsmQuery

        public AsmQuery()
    • Method Detail

      • apply

        public <RES> RES apply​(xyz.cofe.fn.Fn1<ENV,​RES> fn)
        Сериализация и вызов лямбды
        Specified by:
        apply in interface Query<ENV>
        Type Parameters:
        RES - результат вызова
        Parameters:
        fn - лямбда
        Returns:
        результат вызова
      • call

        protected <RES> RES call​(xyz.cofe.fn.Fn1<ENV,​RES> fn,
                                 SerializedLambda sl,
                                 LambdaDump dump)
        Реализация вызова лямбды
        Type Parameters:
        RES - результат вызова
        Parameters:
        fn - лямбда
        sl - лямбда - сериализация
        dump - байт-код лямбды
        Returns:
        результат вызова