Package xyz.cofe.trambda
Class AsmQuery<ENV>
- java.lang.Object
-
- xyz.cofe.trambda.AsmQuery<ENV>
-
- Type Parameters:
ENV- Окружение передаваемое в лямбду
- All Implemented Interfaces:
Query<ENV>
public class AsmQuery<ENV> extends Object implements Query<ENV>
Сериализация Java лямбды.Это клас по сути является абстрактным, и для реализации конечной функциональности требуется переопределить метод
call(Fn, SerializedLambda, MethodDef)Данный класс по сути выполняет следующие функции
- Метода
apply(Fn)- получает байт код fn - Полученный байт код передает в
call(Fn, SerializedLambda, MethodDef)
AtomicReference<MethodDef> mdefRef = new AtomicReference<>(); var res = new AsmQuery<IEnv>(){ @Override protectedRES call(Fn<IEnv, RES> fn, SerializedLambda sl, MethodDef mdef){ // Сохранение представления байт кода mdefRef.set(mdef); return super.call(fn, sl, mdef); } }.apply( env0 -> env0.getUsers().filter(u -> u.getName().contains("Petrov")) ); - See Also:
MethodDump,MethodDef
-
-
Field Summary
Fields Modifier and Type Field Description protected Map<Fn<ENV,? extends Object>,MethodDef>fn2mdefКэш серилизованных лямбд - байт-кодprotected Map<String,MethodDef>methodsКэш сериализованых лямбд - байт-кодprotected Map<Fn<ENV,? extends Object>,SerializedLambda>serializedLambdasКэш серилизованных лямбд
-
Constructor Summary
Constructors Constructor Description AsmQuery()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description <RES> RESapply(Fn<ENV,RES> fn)Сериализация и вызов лямбдыprotected <RES> REScall(Fn<ENV,RES> fn, SerializedLambda sl, MethodDef mdef)Реализация вызова лямбдыprotected StringidOf(SerializedLambda sl)Идентификатор в кеше для лямбды
-
-
-
Method Detail
-
call
protected <RES> RES call(Fn<ENV,RES> fn, SerializedLambda sl, MethodDef mdef)
Реализация вызова лямбды- Type Parameters:
RES- результат вызова- Parameters:
fn- лямбдаsl- лямбда - сериализацияmdef- байт-код лямбды- Returns:
- результат вызова
-
idOf
protected String idOf(SerializedLambda sl)
Идентификатор в кеше для лямбды- Parameters:
sl- лямбда- Returns:
- идентификатор
-
-