по моему опыту, Excel еще более широко используется внутренний корпус. Мы сейчас делаем проект, где мы преобразовываем ~ 60 000 документов Excel (с 4-12 листами в каждом) к формам Sharepoint и Infopath.;)
Другие упоминали, что определенные конструкции, такие как Коллекции
, требуют объектов и что у объектов больше накладных расходов, чем у их примитивных аналогов (память и упаковка).
Еще одно соображение:
Может быть удобно инициализировать объекты значением null
или отправить параметры null
в метод / конструктор, чтобы указать состояние или функцию. Это невозможно сделать с примитивами.
Многие программисты инициализируют числа равными 0 (по умолчанию) или -1, чтобы обозначить это, но в зависимости от сценария это может быть неверным или вводящим в заблуждение.
Это также установит сцену для NullPointerException
, когда что-то используется неправильно, что намного удобнее для программистов, чем какая-то произвольная ошибка в дальнейшем.
Я бы использовал типы оболочек только в случае необходимости.
Используя их, вы ничего не выиграете, кроме того факта, что они являются объектами
.
И вы теряете накладные расходы на использование памяти и время, затрачиваемое на упаковку / распаковку.
Как правило, вам следует использовать примитивные типы, если вам не нужен объект по какой-либо причине (например, для помещения в коллекцию). Даже тогда рассмотрите другой подход, который не требует объекта, если вы хотите максимизировать числовую производительность. Это рекомендуется в документации , и в этой статье показано, как автоматическая упаковка может вызвать большую разницу в производительности.
Если вы хотите использовать Коллекции, вы должны использовать классы Wrapper.
Примитивные типы используются для массивов. Кроме того, для представления данных, которые не имеют поведения, например счетчика или логического условия.
После автобокса граница «когда использовать примитив или оболочку» стала довольно нечеткой.
Но помните, что обертки являются объекты, так что вы получите все модные функции Java. Например, вы можете использовать отражение для создания объектов типа Integer, но не значений типа int. Классы-оболочки также имеют такие методы, как valueOf.
Если вы хотите создать тип значения. Что-то вроде ProductSKU или AirportCode.
Когда примитивный тип (строка в моих примерах) определяет равенство, вы захотите переопределить равенство.
Коллекции являются типичным случаем для простых объектов оболочки Java. Однако вы можете подумать о том, чтобы дать Wrapper более конкретное значение в коде (объект значения).
IMHO there ' Почти всегда выгодно использовать объекты значений, когда дело сводится к удобочитаемости и поддержке кода. Обертывание простых структур данных внутри объектов, когда у них есть определенные обязанности, часто упрощает код. Это очень важно в Domain-Driven Design .
Конечно, есть проблема с производительностью, но я склонен игнорировать ее, пока у меня не будет возможности измерить производительность с помощью правильных данных и предпринять более целенаправленные действия в проблемной области. Также может быть легче понять проблему производительности, если код также прост для понимания.
Это очень важно в Domain-Driven Design .Конечно, существует проблема с производительностью, но я склонен игнорировать ее, пока у меня не будет возможности измерить производительность с помощью правильных данных и предпринять более целенаправленные действия в проблемной области. Также может быть легче понять проблему производительности, если код также прост для понимания.
Это очень важно в Domain-Driven Design .Конечно, есть проблема с производительностью, но я склонен игнорировать ее, пока у меня не будет возможности измерить производительность с помощью правильных данных и предпринять более целенаправленные действия в проблемной области. Также может быть легче понять проблему производительности, если код также прост для понимания.