У меня есть класс, который имеет одно абстрактное поле члена.
public class Editor implements PropertyEditor {
@Inject
AbstractEditor editor;
@Inject
public Editor() {
}
(...)
}
Используя интерфейс кинжала и провайдера, я хотел бы создать два разных объекта и внедрить другую реализацию AbstractEditor, что-то вроде этого:
@Singleton
public class EditorFactory {
@Inject
Provider<Editor> numericEditorProvider;
@Inject
Provider<Editor> textEditorProvider;
(...)
static WidgetCreator INTEGER = new WidgetCreator(EditorType.INTEGER) {
@Override
public PropertyEditor create(EditorFactory factory) {
return factory.numericEditorProvider.get();
}
};
static WidgetCreator STRING = new WidgetCreator(EditorType.STRING) {
@Override
public PropertyEditor create(EditorFactory factory) {
return factory.textEditorProvider.get();
}
};
}
Есть ли способ передать конкретный экземпляр AbstractEditor каждому редактору? INTEGER должен предоставить IntegerEditor, а STRING должен защитить StringEditor.
IntegerEditor extends AbstractEditor
StringEditor extends AbstractEditor