我想在我的框架中实现一些控制反转。
所以我有一个接口GenericDatabase
来定义必须实现的方法。我事先并不知道哪些类会实现它,但我有调用接口方法的方法。所以在运行时我需要从配置文件中读取应该使用哪个特定实现(否则,我必须知道用户可能使用的所有潜在实现类)。我已经阅读了一些Martin Fowler的文章,但没有明确这个问题。
我怎样才能做到这一点?
我想我正在尝试类似的事情:
GenericDatabase database = Class.forName("com.example.myCustomDatabase").newInstance();
还有一个障碍,它应该在try-with-resources内部:
try (GenericDatabase database = Class.forName("com.example.myCustomDatabase").newInstance()) {
答案 0 :(得分:0)
经过一些测试,我可能错了,我认为正确的方法是:
try (GenericDatabase database = (GenericDatabase) Class.forName("com.example.myCustomDatabase").newInstance()) {
使用:
public interface GenericDatabase extends AutoCloseable {
从配置文件中读取com.example.myCustomDatabase
。