This is the manual for older MicroStream versions (Version < 5.0).
The new documentation (Version >= 5.0) is located at:
Feature
Supported
Note
Classes
Classes without default constructor
Abstract classes / Interfaces
Perfectly handleable as types, but there can never be instances to be persisted in the first place.
Inner classes
Anonymous inner classes
Primitives
References
Final fields
Static fields
Not supported since they are outside of an entity graph / a database, i.e. potentially shared by multiple graphs.
Constant primitives
No sense in persisting those. These are just plain trivial values outside of an entity graph / a database.
Constant instances
Must be registered for loading to update them instead of creating independent new instances.
Primitive arrays
Object arrays
Multi dimensional arrays
Technically the same as object arrays as every array is an object itself.
JDK value types (String, Number types, Date, File, Locale, Optional, ...)
Optimized handling via custom TypeHandlers.
Collections
Via generic handling logic (List, Set, Map, etc.). Optimal handling required tailored TypeHandler (e.g. correctly handling loadFactor in java.util.HashMap)
Nested Collections
JVM system-tied classes (Thread, ClassLoader, WeakReference, ...)
Technically handleable, but handling system-instances could cause fatal problems (e.g. start a Thread just from loading data), so it is intentionally disabled.
JVM external-tied classes (IO-Streams, FileChannel, ...)
Technically handleable, but external dependencies could cause fatal problems (e.g. existence of a referenced file), so it is intentionally disabled.
Feature
Supported
Note
Enums
Automatically handled as constant instances to maintain referential integrity / identity.
Enums with mutable state
Enums anonymous subclasses
Feature
Supported
Note
Lambdas
Type-handleable in theory. But JVM is not able to resolve its own type definitions for lambdas.
Feature
Supported
Note
Records
Records are mere syntax sugar for classes.