затмение сериализованных членов проверки - PullRequest
1 голос
/ 30 марта 2011

Когда я определяю класс Java как Serializable, Eclipse не предупреждает меня о том, что некоторые члены не являются Serializable, что может привести к сбою приложения сериализации @ runtime.

Я не смог найти никаких настроек, чтобы включить проверку члена.

Есть идеи, как проверить, что члены класса Serializable также являются сериализуемыми?

Спасибо

Ответы [ 2 ]

0 голосов
/ 30 марта 2011

Допустимо иметь ссылку на тип, который не является сериализуемым, который в конечном итоге указывает на сериализуемый объект во время выполнения:


import java.io.Serializable;</p>

<p>public class Test implements Serializable {</p>

<pre><code>private Object data;

public void setData(Object data) {
    this.data = data;
}

}

если вы в последний раз напишите что-то вроде:


    Test t1 = new Test();
    Test t2 = new Test();</p>

<pre><code>t1.setData("Serializable");
t2.setData(new Object());

у вас не возникнет проблем с сериализацией t1, но она взорвется на t2.

0 голосов
/ 30 марта 2011

Предполагая, что никто не может придумать способ сделать это непосредственно в Eclipse, я бы порекомендовал плагину FindBugs, в котором есть правило SerializableIdiom, которое, я считаю, должно выделить проблему, о которой вы беспокоитесь.

Я могу добавить более подробную информацию о правиле, если требуется. Их сложно форматировать для отображения здесь, хотя я перестал добавлять их к исходному ответу

...