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.