A final
поле должно быть инициализировано, поскольку объект полностью построен и что конструктор вернулся.
Пока здесь final
поля никогда не оцениваются:
public AuditEvent() {
// No content
}
Таким образом, если вы вызываете этот конструктор, а не другой, вы нарушаете ограничения final
. Тогда как ошибка компиляции.
Если конструктор no arg имеет смысл в вашем случае использования, вы все равно можете определить инициализаторы полей, такие как:
private final String m_timeStamp = "...";
private final String m_userName = "...";
Или в качестве альтернативной цепочки конструктор no arg к конструктору args:
public AuditEvent() {
this("...", "...", ...);
}