A programmer customizing a managed package can write a class that implements an interface supplied by the managed package. But there is no way for the managed package to instantiate that class because there is no mechanism in Apex to create a class starting from its name. This means that the conventional extension mechanism of providing an interface that customizers implement is not available: managed packages are closed for extension. This is very limiting.
These features are needed to address this:
- A basic mechanism like Java's Class.forName("CustomizingClassName").newInstance(). A couple of other ideas mention this mixed in with other features; it is obviously generally useful.
- That mechanism to work across managed package boundaries.