2010-08-04 2 views
1

Я хотел бы знать, есть ли опция компилятора, которая могла бы позволить мне удалить/вылечить возникшую ошибку («переменная X может не быть инициализирована») при компиляции класса, у которого есть последнее поле в нем. Или даже лучше было бы, чтобы конечные поля были инициализированы значением java по умолчанию.Инициализация окончательных полей - Java

Спасибо,

ExtremeCoder

+1

Почему вы хотите это сделать? –

+2

Такой вид поражения конечных полей, не так ли? – BoltClock

+0

Я делаю это, потому что я unmarshalling XML-документ в 1000ds объектов. Поля, таким образом, инициализированы так или иначе ... – ExtremeCoder

ответ

3

Путь вылечить ошибку, исправить код: убедитесь, что вы инициализировать значение в явном виде. Я не верю, что есть возможность просто игнорировать ошибку.

Один из способов имитировать это, чтобы дать локальным переменным конструкторам заданные значения по умолчанию Java, а затем заменить их в ходе выполнения конструктора. В конце конструктора установите значения полей для значений локальных переменных.

Имейте в виду, если у вас есть много кода в конструкторе вы можете рассмотреть рефакторинга все равно ...

+0

Спасибо, я думаю, я мог бы попробовать вашу вторую идею. Проблема в том, что у меня более 1000 сгенерированных исходных файлов, и я не хочу перебирать их. Возможно, я должен был добавить, что на самом деле я использую JAXB для их создания, и я удаляю методы setter и делаю поля окончательными. Теперь это означает, что поля инициализируются процессом unmarshalling (поэтому я хотел бы просто избавиться от ошибки вместе, так как это ничтожно) Спасибо. – ExtremeCoder

+1

Почему вы создаете все это? Дополнительная работа? Правило № 1: оставить сгенерированный код в одиночку. – EJP

Смежные вопросы