Package xyz.cofe.trambda.bc.cls
Class CBegin
- java.lang.Object
-
- xyz.cofe.trambda.bc.cls.CBegin
-
- All Implemented Interfaces:
Serializable,xyz.cofe.collection.ImTree<ByteCode>,xyz.cofe.collection.ImTreeWalk<ByteCode>,AccFlagsProperty,ByteCode,ClassFlags,ClazzWriter,ClsByteCode
public class CBegin extends Object implements ClsByteCode, xyz.cofe.collection.ImTree<ByteCode>, ClazzWriter, AccFlagsProperty, ClassFlags
Описывает класс / модуль- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classCBegin.JavaNamedМанипуляции с именем класса
-
Field Summary
Fields Modifier and Type Field Description protected intaccessфлаги доступа к классуAccFlagsprotected List<CAnnotation>annotationsаннотации прикрепленные к классуprotected List<CField>fieldsСписок полней классаprotected List<CInnerClass>innerClassesprotected String[]interfacesимена (байт-код) интерфейсов, смJavaClassNameprotected List<CMethod>methodsСписок методов классаprotected Stringnameprotected CNestHostnestHostprotected List<CNestMember>nestMembersprotected Map<ClsByteCode,Integer>orderСодержит порядок определения полей/методов/.. в классе (байт-коде)protected COuterClassouterClassprotected CPermittedSubclasspermittedSubclassprotected StringsignatureСигнатура в случае Generic класса/интерфейса или nullprotected CSourcesourceСодержит имя исходного класса/файла отладки (debug)protected StringsuperNameИмя (байт-код) класса родителяJavaClassNameprotected List<CTypeAnnotation>typeAnnotationsаннотации прикрепленные к классуprotected intversionверсия байт-кода 45 - Java 1.0 45.3 - Java 1.1 46 - Java 1.2 47 - Java 1.3 48 - Java 1.4 49 - Java 5 50 - Java 6 51 - Java 7 52 - Java 8 53 - Java 9 54 - Java 10 55 - Java 11 56 - Java 12 57 - Java 13 58 - Java 14 59 - Java 15 60 - Java 16 61 - Java 17 62 - Java 18
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description CBeginclone()Создает полную копию классаCBeginconfigure(Consumer<CBegin> conf)Конфигурация экземпляраintgetAccess()Возвращает флаги доступа к классуAccFlagsList<CAnnotation>getAnnotations()Возвращает аннотации прикрепленные к классуList<CField>getFields()Возвращает список полней классаList<CInnerClass>getInnerClasses()String[]getInterfaces()Возвращает имена (байт-код) интерфейсов, смJavaClassNameList<CMethod>getMethods()Возвращает список методов классаStringgetName()Возвращает имя (байт-код) класса, смjavaName(),JavaClassNameCNestHostgetNestHost()List<CNestMember>getNestMembers()Map<ClsByteCode,Integer>getOrder()Возвращает порядок определения полей/методов/.. в классе (байт-коде)COuterClassgetOuterClass()CPermittedSubclassgetPermittedSubclass()StringgetSignature()Возвращает сигнатуру genericCSourcegetSource()Возвращает имя исходного файлаStringgetSuperName()Возвращает имя (байт-код) класса родителяJavaClassNameList<CTypeAnnotation>getTypeAnnotations()Возвращает аннотации прикрепленные к классуintgetVersion()Возвращает версию байт-кода совместимую с JVMversionCBegin.JavaNamedjavaName()Изменение имени класса, меняет содержимое поляnamexyz.cofe.iter.Eterable<ByteCode>nodes()Возвращает дочерние узлыCBeginorder(ClsByteCode c, int order)Указывает порядок определения полей/методов/..static CBeginparseByteCode(byte[] byteCode)Парсинг байт-кодаstatic CBeginparseByteCode(Class<?> clazz)Парсинг байт-кода класса.static CBeginparseByteCode(URL url)Парсинг байт-кодаvoidsetAccess(int access)Указывает флаги доступа к классуAccFlagsvoidsetAnnotations(List<CAnnotation> ls)Указывает аннотации прикрепленные к классуvoidsetFields(List<CField> fields)Указывает список полней классаvoidsetInnerClasses(List<CInnerClass> ls)voidsetInterfaces(String[] interfaces)Указывает имена (байт-код) интерфейсов, смJavaClassNamevoidsetMethods(List<CMethod> methods)Указывает список методов классаvoidsetName(String name)Указывает имя (байт-код) класса, смjavaName(),JavaClassNamevoidsetNestHost(CNestHost s)voidsetNestMembers(List<CNestMember> ls)voidsetOrder(Map<ClsByteCode,Integer> order)Указывает порядок определения полей/методов/.. в классе (байт-коде)voidsetOuterClass(COuterClass s)voidsetPermittedSubclass(CPermittedSubclass s)voidsetSignature(String signature)Указывает сигнатуру genericvoidsetSource(CSource s)Указывает имя исходного файлаvoidsetSuperName(String superName)Указывает имя (байт-код) класса родителяJavaClassNamevoidsetTypeAnnotations(List<CTypeAnnotation> ls)Указывает аннотации прикрепленные к классуvoidsetVersion(int version)Указывает версию байт-кода совместимую с JVMversionbyte[]toByteCode()Возвращает байт-код.StringtoString()voidwrite(org.objectweb.asm.ClassWriter v)Генерация байт кода-
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface xyz.cofe.trambda.bc.ClassFlags
isAbstract, isAnnotation, isDeprecated, isEnum, isFinal, isInterface, isMandated, isModule, isOpen, isPrivate, isProtected, isPublic, isRecord, isStaticPhase, isSuper, isSynthetic, isTransitive, setAbstract, setAnnotation, setDeprecated, setEnum, setFinal, setInterface, setMandated, setModule, setOpen, setPrivate, setProtected, setPublic, setRecord, setStaticPhase, setSuper, setSynthetic, setTransitive
-
-
-
-
Field Detail
-
version
protected int version
версия байт-кода- 45 - Java 1.0
- 45.3 - Java 1.1
- 46 - Java 1.2
- 47 - Java 1.3
- 48 - Java 1.4
- 49 - Java 5
- 50 - Java 6
- 51 - Java 7
- 52 - Java 8
- 53 - Java 9
- 54 - Java 10
- 55 - Java 11
- 56 - Java 12
- 57 - Java 13
- 58 - Java 14
- 59 - Java 15
- 60 - Java 16
- 61 - Java 17
- 62 - Java 18
-
access
protected int access
флаги доступа к классуAccFlags
-
name
protected String name
-
signature
protected String signature
Сигнатура в случае Generic класса/интерфейса или null
-
superName
protected String superName
Имя (байт-код) класса родителяJavaClassName
-
interfaces
protected String[] interfaces
имена (байт-код) интерфейсов, смJavaClassName
-
source
protected CSource source
Содержит имя исходного класса/файла отладки (debug)
-
outerClass
protected COuterClass outerClass
-
nestHost
protected CNestHost nestHost
-
permittedSubclass
protected CPermittedSubclass permittedSubclass
-
annotations
protected List<CAnnotation> annotations
аннотации прикрепленные к классу
-
typeAnnotations
protected List<CTypeAnnotation> typeAnnotations
аннотации прикрепленные к классу
-
nestMembers
protected List<CNestMember> nestMembers
-
innerClasses
protected List<CInnerClass> innerClasses
-
order
protected Map<ClsByteCode,Integer> order
Содержит порядок определения полей/методов/.. в классе (байт-коде)
-
-
Constructor Detail
-
CBegin
public CBegin()
Конструктор по умолчанию
-
CBegin
public CBegin(int version, int access, String name, String signature, String superName, String[] interfaces)Конструктор- Parameters:
version- версия байт-кодаversionaccess- флаги доступаname- имя (байт-код) класса, смJavaClassNamesignature- сигнатура, в случае Generic типаsuperName- имя (байт-код) класса родителяinterfaces- имена (байт-код) интерфейсов
-
CBegin
public CBegin(CBegin sample)
Конструктор копирования- Parameters:
sample- образец для копирования
-
-
Method Detail
-
clone
public CBegin clone()
Создает полную копию класса- Specified by:
clonein interfaceClsByteCode- Overrides:
clonein classObject- Returns:
- копия
-
configure
public CBegin configure(Consumer<CBegin> conf)
Конфигурация экземпляра- Parameters:
conf- конфигурация- Returns:
- SELF ссылка
-
getVersion
public int getVersion()
Возвращает версию байт-кода совместимую с JVMversion- Returns:
- версия совместимая JVM
-
setVersion
public void setVersion(int version)
Указывает версию байт-кода совместимую с JVMversion- Parameters:
version- версия совместимая JVM
-
getAccess
public int getAccess()
Возвращает флаги доступа к классуAccFlags- Specified by:
getAccessin interfaceAccFlagsProperty- Returns:
- флаги доступа
-
setAccess
public void setAccess(int access)
Указывает флаги доступа к классуAccFlags- Specified by:
setAccessin interfaceAccFlagsProperty- Parameters:
access- флаги доступа
-
getName
public String getName()
Возвращает имя (байт-код) класса, смjavaName(),JavaClassName- Returns:
- имя класса
-
setName
public void setName(String name)
Указывает имя (байт-код) класса, смjavaName(),JavaClassName- Parameters:
name- имя класса
-
javaName
public CBegin.JavaNamed javaName()
Изменение имени класса, меняет содержимое поляname- Returns:
- управление именем класса
-
getSignature
public String getSignature()
Возвращает сигнатуру generic- Returns:
- сигнатура или null
-
setSignature
public void setSignature(String signature)
Указывает сигнатуру generic- Parameters:
signature- сигнатура или null
-
getSuperName
public String getSuperName()
Возвращает имя (байт-код) класса родителяJavaClassName- Returns:
- имя (байт-код) класса родителя
-
setSuperName
public void setSuperName(String superName)
Указывает имя (байт-код) класса родителяJavaClassName- Parameters:
superName- имя (байт-код) класса родителя
-
getInterfaces
public String[] getInterfaces()
Возвращает имена (байт-код) интерфейсов, смJavaClassName- Returns:
- имена (байт-код) интерфейсов
-
setInterfaces
public void setInterfaces(String[] interfaces)
Указывает имена (байт-код) интерфейсов, смJavaClassName- Parameters:
interfaces- имена (байт-код) интерфейсов
-
getSource
public CSource getSource()
Возвращает имя исходного файла- Returns:
- имя исходного файла
-
setSource
public void setSource(CSource s)
Указывает имя исходного файла- Parameters:
s- имя исходного файла
-
getOuterClass
public COuterClass getOuterClass()
-
setOuterClass
public void setOuterClass(COuterClass s)
-
getNestHost
public CNestHost getNestHost()
-
setNestHost
public void setNestHost(CNestHost s)
-
getPermittedSubclass
public CPermittedSubclass getPermittedSubclass()
-
setPermittedSubclass
public void setPermittedSubclass(CPermittedSubclass s)
-
getAnnotations
public List<CAnnotation> getAnnotations()
Возвращает аннотации прикрепленные к классу- Returns:
- аннотации
-
setAnnotations
public void setAnnotations(List<CAnnotation> ls)
Указывает аннотации прикрепленные к классу- Parameters:
ls- аннотации
-
getTypeAnnotations
public List<CTypeAnnotation> getTypeAnnotations()
Возвращает аннотации прикрепленные к классу- Returns:
- аннотации
-
setTypeAnnotations
public void setTypeAnnotations(List<CTypeAnnotation> ls)
Указывает аннотации прикрепленные к классу- Parameters:
ls- аннотации
-
getNestMembers
public List<CNestMember> getNestMembers()
-
setNestMembers
public void setNestMembers(List<CNestMember> ls)
-
getInnerClasses
public List<CInnerClass> getInnerClasses()
-
setInnerClasses
public void setInnerClasses(List<CInnerClass> ls)
-
getFields
public List<CField> getFields()
Возвращает список полней класса- Returns:
- список полней класса
-
setFields
public void setFields(List<CField> fields)
Указывает список полней класса- Parameters:
fields- список полней класса
-
getMethods
public List<CMethod> getMethods()
Возвращает список методов класса- Returns:
- список методов класса
-
setMethods
public void setMethods(List<CMethod> methods)
Указывает список методов класса- Parameters:
methods- список методов класса
-
getOrder
public Map<ClsByteCode,Integer> getOrder()
Возвращает порядок определения полей/методов/.. в классе (байт-коде)- Returns:
- порядок определения полей/методов/..
-
setOrder
public void setOrder(Map<ClsByteCode,Integer> order)
Указывает порядок определения полей/методов/.. в классе (байт-коде)- Parameters:
order- порядок определения полей/методов/..
-
order
public CBegin order(ClsByteCode c, int order)
Указывает порядок определения полей/методов/..- Parameters:
c- поле/методо/...order- порядок- Returns:
- SELF ссылка
-
nodes
public xyz.cofe.iter.Eterable<ByteCode> nodes()
Возвращает дочерние узлы
-
write
public void write(org.objectweb.asm.ClassWriter v)
Генерация байт кода- Specified by:
writein interfaceClazzWriter- Parameters:
v- куда будет записан байт код
-
toByteCode
public byte[] toByteCode()
Возвращает байт-код.
Класс будет сгенерирован с использованием таких флаговnew ClassWriter(ClassWriter.COMPUTE_MAXS|ClassWriter.COMPUTE_FRAMES)- Returns:
- байт-код
-
parseByteCode
public static CBegin parseByteCode(byte[] byteCode)
Парсинг байт-кода- Parameters:
byteCode- байт-код- Returns:
- представление класса
-
parseByteCode
public static CBegin parseByteCode(Class<?> clazz)
Парсинг байт-кода класса.- Будет произведен поиск класса в ресурсах
var resName = "/"+clazz.getName().replace(".","/")+".class"
clazz.getResource(resName) - Если ресурс будет найдет, то быдет вызов
parseByteCode(URL)
- Parameters:
clazz- класс- Returns:
- представление байт кода
- Будет произведен поиск класса в ресурсах
-
-