Все примеры, на которые я смотрю на размышления, показывают создание нового экземпляра неизвестной реализации и включение этой реализации в интерфейс. Проблема в том, что теперь вы не можете вызывать какие-либо новые методы (только переопределения) для класса реализации, так как ваша ссылочная переменная объекта имеет тип интерфейса. Вот что я имею:
Class c = null;
try {
c = Class.forName("com.path.to.ImplementationType");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
InterfaceType interfaceType = null;
try {
interfaceType = (InterfaceType)c.newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
Если у меня есть только ссылка на "com.path.to.ImplementationType", и я не знаю, что это за тип (он поступает из файла конфигурации), то как я могу использовать имя класса для перечислить его в ImplementationType? Возможно ли это?