я играл с GWT, и я, кажется, имеют плохую привычку создавать классы, которые не соответствуют правилу для GWT сериализуемых объектов:Как заставить Eclipse предупреждать меня, когда я забываю создать конструктор по умолчанию в объекте GWT Serializable?
определенный пользователем класс сериализации, если все из следующие правила:
- это присваиваемое IsSerializable или Сериализуемому, либо потому, что он непосредственно реализует один из этих интерфейсов или потому, что он получает от суперкласса, который делает
- Все неконечное, непреходящее поле экземпляра является сами сериализуемые, и
- Начиная с GWT 1.5 он должен иметь конструктор по умолчанию (нулевой аргумент) (с любым модификатором доступа) или вообще без конструктора.
Обычно я забываю включить конструктор по умолчанию. Обычно я узнаю об этом, когда получаю исключение для сериализации во время выполнения. Это кажется мне ненужным. Несомненно, есть какой-то способ, которым Eclipse (или плагин Google) может статически анализировать мой код GWT и обнаруживать этот винт во время компиляции? Увидеть маленькую красноватую фигуру где-то бесконечно красивее, чем получить исключение во время выполнения.
Я надеюсь на решение как один из следующих, в порядке возрастания желания:
- Config опции можно установить в Eclipse, или Google плагин, чтобы включить этот вид предупреждения/проверки
- Дополнительный плагин, который я могу установить, что бы это сделать
- Любой другой существующий способ получить работу.
- Подсказки о том, как я могу изменить плагин Google, чтобы сделать это сам.
Итак, вы создаете параметризованный конструктор, но забудьте создать публичный пустой? Я не видел плагина, который поможет вам. Это не проблема компиляции, даже если класс реализует Serializable. – Vladimir
@Vladimir, Вы правы в том, что код компилируется. Тем не менее, существует много статического анализа, который может быть сделан, который не связан с тем, действительно ли компилируется код. Такие инструменты, как findbugs, checkstyle и другие, помогают людям идентифицировать ошибки во время компиляции. Кажется в высшей степени разумным ожидать, что можно написать инструмент для обнаружения сценария «класс реализует интерфейс IsSerializeable gwt, но не имеет конструктора по умолчанию» (как в стороне, я обычно делаю его закрытым, поскольку я не хочу никогда назовите это сам. GWT не заботится о том, какой модификатор доступа он имеет) –