У меня есть следующий заводConvert завод шаблон для модуля Guice
public class AppleFactory<T extends Fruit>
extends AbstractAppleFactory<Class<T>, TypeOfFruits, Fruits<T>>
{
private static final AppleFactory factroy = new AppleFactory();
private AppleFactory()
{
}
public static Fruits<? extends Fruit> get(Class<? extends Fruit> clazz,
TypeOfFruits typeOfFruits)
{
return (Fruits<? extends Fruit>) factroy.getInstance(clazz, typeOfFruits);
}
@Override
protected Fruits<T> newInstance(Class<T> clazz, TypeOfFruits typeOfFruits)
{
final Fruits<T> fruits;
fruits = new FruitsImpl<T>(clazz, typeOfFruits,"hello");
return fruits;
}
}
И я попытался преобразовать его в скороговорку Guice модуля, делая это:
@ImplementedBy(AppleFactoryImpl.class)
public interface AppleFactory<T extends Fruit>
{
Fruits<? extends Fruit> get(Class<? extends Fruit> clazz,
TypeOfFruits typeOfFruits)
}
@Singleton
public class AppleFactoryImpl implements AppleFactory
{
@Override
public Fruits<? extends Fruit> get(Class<? extends Fruit> clazz,
TypeOfFruits typeOfFruits)
{
final Fruits<T> fruits;
fruits = new FruitsImpl<T>(clazz, typeOfFruits,"hello");
return fruits;
}
}
Но я получаю сообщение об ошибке в реализация. В нем говорится, что он не может разрешить тип T для фруктов.
Моя конечная цель иметь различные реализации через этот завод т.е. связать
FruitFactory, FruitFactory
к конкретным реализациям.
Это может быть изменен, чтобы использовать провайдер или что-нибудь еще, я не слишком жестким на подходе
Кто-нибудь знает, как это исправить?
Какая у вас конечная цель? Связано ли это с 'FruitFactory' 'FruitFactory ' конкретным реализациям? –
@DavidRawson, да, это конечная цель. Разве что я могу положить какие-то фрукты на эту фабрику и инициализировать ее. – Schumi
Отлично! Можете ли вы изменить свой вопрос, чтобы прояснить это? Тогда кто-то сможет ответить –