Строка не является типом примитива, все же Вы обычно хотите использовать ее с семантикой значения, т.е. как значение.
значение А - что-то, чему можно доверять, не изменится за спиной. Если Вы пишете: String str = someExpr();
Вы не хотите, чтобы он изменился, если ВЫ не делаете что-то с str.
Строка как Объект имеет естественно семантику указателя, для получения семантики значения также это должно быть неизменно.
Самая большая разница в том, что IRepository
привязан к одному типу, а IRepository
потенциально привязан к нескольким типам. Какой из них подходит, во многом зависит от вашего конкретного сценария.
В целом, я считаю IRepository
более полезным. Во время использования предельно ясно, что такое содержимое IRepository
( T
). С другой стороны, из данного IRepository
не ясно, что в нем содержится.
В случаях, когда мне нужно хранить несколько типов объектов, я обычно создаю карту IRepository < T>
экземпляров. Например: Словарь
.