Как утверждать что-то во время компиляции в Java? - PullRequest
7 голосов
/ 16 июня 2009

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

BOOST предоставляет прекрасную возможность «статического подтверждения» в C ++, которая даже обеспечивает полуприличные ошибки, когда утверждения терпят неудачу; Кто-нибудь знает, как создать средство утверждения во время компиляции в Java?

Редактировать: Я только что видел прекрасный пример: этот класс из Eclipse имеет два постоянных массива, которые, как предполагается, имеют одинаковую длину. Если бы это был мой код, я бы хотел, чтобы компилятор сообщал мне, если они имеют разную длину.

Ответы [ 3 ]

7 голосов
/ 16 июня 2009

Есть ряд инструментов, которые вы можете использовать

  • PMD
  • Checkstyle
  • FindBugs
  • Проверить методы в Джакарте Commons-lang (мы используем это вместо assert и оставляем это в)
  • Cobertura / EMMA (для покрытия кода).

Сочетание этих и хороших модульных тестов позволит поймать низко висящие фрукты (и некоторые из более высоких вещей)

2 голосов
/ 16 июня 2009

Инкрементные компиляторы, которые входят в состав IDE, таких как Eclipse, могут быть настроены на выдачу предупреждений или ошибок при поиске кода, который является допустимым Java, но может вызвать проблемы во время выполнения. Вы можете изменить эти настройки так, как вам нравится, хотя они могут начать становиться агрессивными и раздражающими.

1 голос
/ 23 мая 2013

Вы можете использовать аннотации.

См. Какую аннотацию @NotNull Java следует использовать? для параметров.

См. JSR-308 и JSR-305 как будущее Java.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...