станд.:: средство выделения создает/уничтожает по сравнению с размещением new/p-> ~ T ()

Java 8+ (до 12) не имеет такого подхода (возможно, в будущем появятся некоторые изменения).

  • Со стороны чистой Java вы можете использовать assert :

    assert  : 
    

В случае неудачи подтверждения выбрасывается AssertionError с .

Однако, вы должны быть уверены, что это активируется добавлением атрибута -ea в JVM .
Утверждения добавляют более значимую информацию для неудачных дел.

  • В качестве альтернативы вы можете использовать apache-commons-lang Validate class:

    Validate.notNull(i, "this parameter can't be null")
    Validate.isTrue(i > 0, "The value must be greater than zero: %d", i);
    

8
задан Evan Teran 26 May 2011 в 18:20
поделиться

2 ответа

Средство выделения могло добавить регистрирующиеся операторы прежде и после конструкции/разрушения или любых других побочных эффектов, которые это хотело сделать.

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

11
ответ дан 5 December 2019 в 12:13
поделиться

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

3
ответ дан 5 December 2019 в 12:13
поделиться
Другие вопросы по тегам:

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