Module jdk.dynalink

Interface GuardingDynamicLinker

All Known Subinterfaces:
TypeBasedGuardingDynamicLinker
All Known Implementing Classes:
BeansLinker, CompositeGuardingDynamicLinker, CompositeTypeBasedGuardingDynamicLinker

public interface GuardingDynamicLinker
The base interface for language-specific dynamic linkers. Such linkers always have to produce method handles with guards, as the validity of the method handle for calls at a call site inevitably depends on some condition (at the very least, it depends on the receiver belonging to the language runtime of the linker). Language runtime implementors will normally implement the linking logic for their own language as one or more GuardingDynamicLinker classes. They will typically set them as prioritized linkers in the DynamicLinkerFactory they configure for themselves, and maybe also set some as fallback linkers to handle language-specific "property not found" etc. conditions.

Consider implementing TypeBasedGuardingDynamicLinker interface instead of this interface for those linkers that are based on the Java class of the objects. If you need to implement language-specific type conversions, have your GuardingDynamicLinker also implement the GuardingTypeConverterFactory interface.

Languages can export linkers to other language runtimes for automatic discovery using a GuardingDynamicLinkerExporter.

Since:
9