Zum Inhalt springen
Anjunar/ DOCS

API

Die Makros, die Typen beschreiben, die Deskriptoren, die sie erzeugen, und die Laufzeittypen, die sie ablegen.

Makros

ReflectMacros und PropertySupport

Alle inline; die Arbeit passiert zur Compile-Zeit.

ReflectMacros.reflect[T]: ClassDescriptor
Die Klasse, ohne Accessoren.
ReflectMacros.reflectWithAccessors[T]: ClassDescriptor
Die Klasse mit einem Accessor pro Property.
ReflectMacros.reflectType[T]: TypeDescriptor
Jeder Typ, parametrisierte eingeschlossen.
ReflectMacros.makeAccessor[E, V](_.p): PropertyAccessor[E, V]
Ein typisierter Getter; in 1.1.4 nur lesend.
ReflectMacros.createInstance[T](args*): T
Ruft den primären Konstruktor einer Case Class auf.
PropertySupport.makeProperty[T, V](_.p): PropertyWithAccessor[T, V]
Deskriptor und Accessor einer Property.
PropertySupport.extractPropertiesWithAccessors[T]
Alle Properties mit Accessoren, geerbte eingeschlossen.
Deskriptoren

Was die Makros erzeugen

Einfache Case Classes, die du behalten, vergleichen und serialisieren kannst.

ClassDescriptor
typeName, simpleName, properties, constructors, baseTypes, typeParameters, annotations, isAbstract, isFinal, isCaseClass.
PropertyDescriptor
name, propertyType, annotations, isReadable, isWriteable, Sichtbarkeit, accessor.
ConstructorDescriptor · ParameterDescriptor
Parameter mit Namen, Typen und Annotationen; isPrimary.
Annotation(annotationClassName, parameters)
Eine Annotation und ihre Argumente nach Namen.
Laufzeit

Wo Deskriptoren leben

Global oder begrenzt, mit denselben Abfragen.

ReflectRegistry
register, registerByTypeName, loadClass, loadClassBySimpleName, createInstance, getPropertyAccessor, isAssignableFrom, getSubTypes, clear.
ReflectClassLoader
create, createWithParent, register, loadClass, createInstanceAs, isAssignableFrom, getSubTypes, clearLocal. Sucht lokal, beim Elternteil, dann global.
ReflectClassLoaderWithResources
Ein Class Loader mit addResource, getResource und getResources.