Вчера, я проектировал класс Java, который я хотел быть initalized со списками различных родовых типов:Проектирование Конструкторы вокруг типа стирания в Java
TheClass(List<String> list) {
...
}
TheClass(List<OtherType> list) {
...
}
Это не будет компилироваться, так как конструкторы имеют один и то же стирание ,
Я просто пошел с фабричными методами дифференцируются по их именам вместо:
public static TheClass createWithStrings(List<String> list)
public static TheClass createWithOtherTypes(List<OtherType> list)
Это меньше, чем оптимальный, так как нет ни одного места, где очевидно, все различные варианты для создания экземпляров доступны.
Я попытался найти лучшие дизайнерские идеи, но нашел удивительно мало результатов. Какие еще шаблоны существуют для разработки этой проблемы?
Хорошая точка в именах методов. «String» является излишним, поскольку он уже находится в сигнатуре метода. –
@Internet Friend: «Strign'» не имеет такого значения в типе параметра, как в имени метода. –