Package xyz.cofe.trambda
Class LambdaDump.Restore
- java.lang.Object
-
- xyz.cofe.trambda.LambdaDump.Restore
-
- Enclosing class:
- LambdaDump
public static class LambdaDump.Restore extends Object
Восстановление класса
-
-
Field Summary
Fields Modifier and Type Field Description protected xyz.cofe.fn.Fn1<CBegin,ClassLoader>classLoaderprotected JavaClassNameclassNameprotected static AtomicIntegerclassNameIdSeqxyz.cofe.fn.Fn1<CBegin,ClassLoader>defaultClassLoaderprotected LambdaDumpdumpprotected StringrootMethodName
-
Constructor Summary
Constructors Constructor Description Restore(LambdaDump dump)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description CBeginclassByteCode()Генерирует класс, вызываетclassByteCode(Consumer)CBeginclassByteCode(Consumer<xyz.cofe.fn.Tuple2<CBegin,CMethod>> rootConsumer)Генерирует класс (байт-код).xyz.cofe.fn.Fn1<CBegin,ClassLoader>classLoader()Возвращает функцию создания ClassLoader для классаLambdaDump.RestoreclassLoader(xyz.cofe.fn.Fn1<CBegin,ClassLoader> cl)Указывает функцию создания ClassLoader для классаJavaClassNameclassName()Возвращает имя генерируемого классаLambdaDump.RestoreclassName(String name)Указывает имя генерируемого классаLambdaDump.RestoreclassName(JavaClassName name)Указывает имя генерируемого классаMethodmethod()Возвращает метод соответствующий корневой лямбдеClass<?>restoreClass()Генерация класса, смrestoreClass(Consumer)Class<?>restoreClass(Consumer<CMethod> rootMethodConsumer)Генерация класса.StringrootMethodName()Возвращает имя метода который содержит реализацию лямбдыLambdaDump.RestorerootMethodName(String name)Указывает имя метода который содержит реализацию лямбды
-
-
-
Field Detail
-
dump
protected final LambdaDump dump
-
classNameIdSeq
protected static final AtomicInteger classNameIdSeq
-
className
protected JavaClassName className
-
rootMethodName
protected String rootMethodName
-
defaultClassLoader
public final xyz.cofe.fn.Fn1<CBegin,ClassLoader> defaultClassLoader
-
classLoader
protected xyz.cofe.fn.Fn1<CBegin,ClassLoader> classLoader
-
-
Constructor Detail
-
Restore
public Restore(LambdaDump dump)
-
-
Method Detail
-
className
public JavaClassName className()
Возвращает имя генерируемого класса- Returns:
- имя генерируемого класса
-
className
public LambdaDump.Restore className(String name)
Указывает имя генерируемого класса- Parameters:
name- имя генерируемого класса- Returns:
- SELF ссылка
-
className
public LambdaDump.Restore className(JavaClassName name)
Указывает имя генерируемого класса- Parameters:
name- имя генерируемого класса- Returns:
- SELF ссылка
-
rootMethodName
public String rootMethodName()
Возвращает имя метода который содержит реализацию лямбды- Returns:
- имя root метода
-
rootMethodName
public LambdaDump.Restore rootMethodName(String name)
Указывает имя метода который содержит реализацию лямбды- Parameters:
name- имя root метода- Returns:
- SELF ссылка
-
classByteCode
public CBegin classByteCode()
Генерирует класс, вызываетclassByteCode(Consumer)- Returns:
- класс
-
classByteCode
public CBegin classByteCode(Consumer<xyz.cofe.fn.Tuple2<CBegin,CMethod>> rootConsumer)
Генерирует класс (байт-код).- Создает класс с набором статичных методов которые представляют из себя лямбды
- Имя класса задано через
className(),className(JavaClassName) - Имя статического метода соответ. корневой лямбде задано как "_root_", см
rootMethodName(String) - Для зависимых лямбд:
- Производится обход дерева
LambdaNodeи создается карта relinkMap - По байт коду методов находятся все вызовы
(случаи
MInvokeDynamicInsn) на целевые (relinkMap) - Найденные вызовы заменяются в целевые вызовы
- Производится обход дерева
- Parameters:
rootConsumer- (возможно null) получает класс/метод- Returns:
- класс
-
classLoader
public xyz.cofe.fn.Fn1<CBegin,ClassLoader> classLoader()
Возвращает функцию создания ClassLoader для класса- Returns:
- создание classLoader
-
classLoader
public LambdaDump.Restore classLoader(xyz.cofe.fn.Fn1<CBegin,ClassLoader> cl)
Указывает функцию создания ClassLoader для класса- Parameters:
cl- создание classLoader- Returns:
- SELF ссылка
-
restoreClass
public Class<?> restoreClass(Consumer<CMethod> rootMethodConsumer)
Генерация класса.- Загружает класс из байт-кода
classByteCode(Consumer)
- Parameters:
rootMethodConsumer- (Может быть null), получает ссылку на корневую лямбду- Returns:
- класс
- Загружает класс из байт-кода
-
restoreClass
public Class<?> restoreClass()
Генерация класса, смrestoreClass(Consumer)- Returns:
- класс
-
method
public Method method()
Возвращает метод соответствующий корневой лямбде- Returns:
- метод
-
-