In all frameworks you require an entry point that configures mappings or component injection. In your example this is the FrameworkDriver. It's not possible to simply scan for implementations and load them dynamically. I would suggest one of two possible solutions.
1) You add a method to the FrameworkDriver that creates the FrameworkObject that is used in the creation of the framework (extending classes would need to override main as otherwise it it will create an instance of the original class and miss this extension). This allows other implementations of FrameworkDriver to override this and provide an alternative implementation.
2) Your driver reads a system property or file which contains the class name for the object or a factory thereof so you no longer need to code it in. Many dependency injection frameworks have used this approach, and some handle it automatically by generating the file from a build plugin or other source processor.
In general though you would probably be better off using a ready made system such as Guice.