
Inline adoc files when they are included exactly once. Also fix language tags because this inlining gives us better information on what language the code is written in.
42 lines
936 B
Plaintext
42 lines
936 B
Plaintext
== Why is this an issue?
|
|
|
|
A non-serializable ``++Comparator++`` can prevent an otherwise-``++Serializable++`` ordered collection from being serializable. Since the overhead to make a ``++Comparator++`` serializable is usually low, doing so can be considered good defensive programming.
|
|
|
|
|
|
=== Noncompliant code example
|
|
|
|
[source,java]
|
|
----
|
|
public class FruitComparator implements Comparator<Fruit> { // Noncompliant
|
|
int compare(Fruit f1, Fruit f2) {...}
|
|
boolean equals(Object obj) {...}
|
|
}
|
|
----
|
|
|
|
|
|
=== Compliant solution
|
|
|
|
[source,java]
|
|
----
|
|
public class FruitComparator implements Comparator<Fruit>, Serializable {
|
|
private static final long serialVersionUID = 1;
|
|
|
|
int compare(Fruit f1, Fruit f2) {...}
|
|
boolean equals(Object obj) {...}
|
|
}
|
|
----
|
|
|
|
|
|
ifdef::env-github,rspecator-view[]
|
|
|
|
'''
|
|
== Implementation Specification
|
|
(visible only on this page)
|
|
|
|
=== Message
|
|
|
|
* Make this class "Serializable".
|
|
|
|
|
|
endif::env-github,rspecator-view[]
|