public abstract @interface


implements Annotation

Class Overview

This annotation is used to prevent the SerVerifier tool from generating warnings when static fields (they are not serializable) are of a type that is serializable.

Why is this a potential problem? Consider the following code:

 class A {
     int x;
     A(int x) {
         this.x = x;
 class B { // static, not ser. static A a = new A(3); @SerId(1) A b;
     void copyref() {
         this.b = a;
 B o = new B();
 // ... 
 // serialization happens

=> when is "o.b == B.a" true?
- when working on a new instance, it is true
- when working on a deserialized instance, it is false, since B.a is NOT restored; it is reinstantiated the first time an object of type B is used by the deserialization process
=> reference equality would work only on a non-deserialized objects graph
=> therefore, proper equals/hashCode would be required, if for instance, deep-equality is be used between such statics and non-static field

Safe solution: Consider using a static factory to create objects of type A.


Inherited Methods
From interface java.lang.annotation.Annotation