Иногда структуры данных должны иметь определенные отношения, которые не могут быть непосредственно описаны в Java, но хорошо проверить как можно раньше, когда код будет отредактирован. Классическими примерами являются то, что массив достаточно большой или что перечисления в разных модулях имеют соответствующие члены.Как утверждать что-то во время компиляции в Java?
BOOST предоставляет прекрасное средство «статического утверждения» на C++, которое даже обеспечивает полупристойные ошибки, когда утверждения терпят неудачу; Кто-нибудь знает, как построить средство утверждения времени компиляции в Java?
Редактировать: Я только что увидел прекрасный пример: класс this из Eclipse имеет два постоянных массива, которые предполагаются одинаковой длины. Если бы это был мой код, я бы хотел, чтобы компилятор сказал мне, имеют ли они разную длину.
Я не знаю, что я согласен, что «структуры данных должны иметь определенные отношения, которые не могут быть непосредственно описаны в Java». Ваши примеры выглядят недействительными. Связь размера массива с остальной программой может быть выражена путем определения размера массива с переменной. И если у вас есть Enum в одном пакете, почему бы вам просто не ссылаться на него с другого? На самом деле я не могу придумать, почему несколько Enums имеют соответствующие элементы. Если Foo должен иметь те же элементы, что и Bar, почему бы просто не использовать Foo повсюду? Разве это не пункт Enum? –
Можете ли вы представить более конкретный пример того типа вещей, который вы хотели бы утверждать таким образом? –