Класс без гражданства не имеет членов экземпляра, и поэтому не существует состояния для сохранения.
Из википедии:
В информатике, инвариант является условием, что можно положиться UPoN быть верным во время выполнения программы, или в какой-то части его.
В java эти условия (инварианты) могут быть запрограммированы в ваш код несколькими способами.Вот некоторые из них:
- используя окончательное ключевое слово
- с помощью Утверждает
- исключений метательных
- с использованием методов мутаторного
Например, возьмут класс Возраст:
public class Age {
private final int age;
public Age(int age) {
// Use exceptions...
if (age < 1) {
throw new IllegalArgumentException("Age cannot be less than 1");
}
// Or use assertions...
assert age > 0;
this.age = age;
}
// A method can be a invariant as well, because it makes sure
// member variables cannot be set to an invalid state.
public Age changeAge(int age) {
assert age > 1;
return new Age(age);
}
}
Итак, последнее ключевое слово - это время компилятора инвариант, потому что он гарантирует, что переменная не будет переназначена. Исключение и утверждение в конструкторе - это временные инварианты, потому что они ограничивают возраст и обеспечивают возраст больше 0. Общественный метод также является инвариантом, поскольку он утверждает, что аргумент недействителен.
Некоторые языки имеют концепцию инвариантов, построенных справа. На странице wikipedia, с которой вы связались, в них приводятся примеры D и Eiffel. Это означает, что вместо того, чтобы создавать исключения, условия утверждения и проверки, вы можете определить ограничение (инвариант) в одном месте, а язык имеет поддержку, чтобы убедиться, что переменные экземпляра остаются в пределах установленных ограничений. В java вы должны сделать это «вручную».
Объект без гражданства имел бы только компиляцию полей постоянной времени - так что нет, инвариантов не может быть. Однако методы могут иметь инварианты. –
Интуитивно, нет. Если у вас нет состояния, то вы не сможете применить инварианты к классу. Какие инварианты вы могли бы сделать, когда не было государства для выполнения условий? –