Когда использовать тип класса обертки и тип примитива

по моему опыту, Excel еще более широко используется внутренний корпус. Мы сейчас делаем проект, где мы преобразовываем ~ 60 000 документов Excel (с 4-12 листами в каждом) к формам Sharepoint и Infopath.;)

87
задан Gopi 11 April 2019 в 04:32
поделиться

6 ответов

Другие упоминали, что определенные конструкции, такие как Коллекции , требуют объектов и что у объектов больше накладных расходов, чем у их примитивных аналогов (память и упаковка).

Еще одно соображение:

Может быть удобно инициализировать объекты значением null или отправить параметры null в метод / конструктор, чтобы указать состояние или функцию. Это невозможно сделать с примитивами.

Многие программисты инициализируют числа равными 0 (по умолчанию) или -1, чтобы обозначить это, но в зависимости от сценария это может быть неверным или вводящим в заблуждение.

Это также установит сцену для NullPointerException , когда что-то используется неправильно, что намного удобнее для программистов, чем какая-то произвольная ошибка в дальнейшем.

61
ответ дан 24 November 2019 в 07:52
поделиться

Я бы использовал типы оболочек только в случае необходимости.

Используя их, вы ничего не выиграете, кроме того факта, что они являются объектами .

И вы теряете накладные расходы на использование памяти и время, затрачиваемое на упаковку / распаковку.

7
ответ дан 24 November 2019 в 07:52
поделиться

Как правило, вам следует использовать примитивные типы, если вам не нужен объект по какой-либо причине (например, для помещения в коллекцию). Даже тогда рассмотрите другой подход, который не требует объекта, если вы хотите максимизировать числовую производительность. Это рекомендуется в документации , и в этой статье показано, как автоматическая упаковка может вызвать большую разницу в производительности.

15
ответ дан 24 November 2019 в 07:52
поделиться

Если вы хотите использовать Коллекции, вы должны использовать классы Wrapper.

Примитивные типы используются для массивов. Кроме того, для представления данных, которые не имеют поведения, например счетчика или логического условия.

После автобокса граница «когда использовать примитив или оболочку» стала довольно нечеткой.

Но помните, что обертки являются объекты, так что вы получите все модные функции Java. Например, вы можете использовать отражение для создания объектов типа Integer, но не значений типа int. Классы-оболочки также имеют такие методы, как valueOf.

1
ответ дан 24 November 2019 в 07:52
поделиться

Если вы хотите создать тип значения. Что-то вроде ProductSKU или AirportCode.

Когда примитивный тип (строка в моих примерах) определяет равенство, вы захотите переопределить равенство.

0
ответ дан 24 November 2019 в 07:52
поделиться

Коллекции являются типичным случаем для простых объектов оболочки Java. Однако вы можете подумать о том, чтобы дать Wrapper более конкретное значение в коде (объект значения).

IMHO there ' Почти всегда выгодно использовать объекты значений, когда дело сводится к удобочитаемости и поддержке кода. Обертывание простых структур данных внутри объектов, когда у них есть определенные обязанности, часто упрощает код. Это очень важно в Domain-Driven Design .

Конечно, есть проблема с производительностью, но я склонен игнорировать ее, пока у меня не будет возможности измерить производительность с помощью правильных данных и предпринять более целенаправленные действия в проблемной области. Также может быть легче понять проблему производительности, если код также прост для понимания.

Это очень важно в Domain-Driven Design .

Конечно, существует проблема с производительностью, но я склонен игнорировать ее, пока у меня не будет возможности измерить производительность с помощью правильных данных и предпринять более целенаправленные действия в проблемной области. Также может быть легче понять проблему производительности, если код также прост для понимания.

Это очень важно в Domain-Driven Design .

Конечно, есть проблема с производительностью, но я склонен игнорировать ее, пока у меня не будет возможности измерить производительность с помощью правильных данных и предпринять более целенаправленные действия в проблемной области. Также может быть легче понять проблему производительности, если код также прост для понимания.

3
ответ дан 24 November 2019 в 07:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: