Skip to content

Commit 39b39d4

Browse files
cpovirkGoogle Java Core Libraries
authored and
Google Java Core Libraries
committed
Use @Serial on serialVersionUID fields.
[`@Serial`](https://docs.oracle.com/en/java/javase/23/docs/api/java.base/java/io/Serial.html) was added in Java 14, but it has only `SOURCE` retention, so it requires Java 14+ only [at _build_ time](#6549). Guava continues to support Java 8 at runtime, and it already has required a higher version (though perhaps only Java 9+?) to build. Still, if this change causes people trouble, it is easy enough for us to include `@Serial` only in our Google-internal source or even to back out the change entirely. (Part of the purpose of this change is to identify any such trouble before we add any features that require newer versions of Java to build "for real.") Alternatively, if this change goes well, we can consider using `@Serial` on _all_ eligible APIs. RELNOTES=n/a PiperOrigin-RevId: 726154745
1 parent 287c701 commit 39b39d4

File tree

312 files changed

+874
-547
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

312 files changed

+874
-547
lines changed

android/guava-testlib/src/com/google/common/collect/testing/AbstractIteratorTester.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import com.google.common.annotations.GwtCompatible;
2828
import com.google.common.annotations.GwtIncompatible;
2929
import com.google.common.annotations.J2ktIncompatible;
30+
import java.io.Serial;
3031
import java.util.ArrayList;
3132
import java.util.Arrays;
3233
import java.util.Collection;
@@ -109,15 +110,15 @@ void assertPermitted(Exception exception) {
109110
}
110111
}
111112

112-
@GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;
113+
@GwtIncompatible @J2ktIncompatible @Serial private static final long serialVersionUID = 0;
113114
}
114115

115116
private static final class UnknownElementException extends RuntimeException {
116117
private UnknownElementException(Collection<?> expected, Object actual) {
117118
super("Returned value '" + actual + "' not found. Remaining elements: " + expected);
118119
}
119120

120-
@GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;
121+
@GwtIncompatible @J2ktIncompatible @Serial private static final long serialVersionUID = 0;
121122
}
122123

123124
/**

android/guava-testlib/src/com/google/common/collect/testing/BaseComparable.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import com.google.common.annotations.GwtCompatible;
2020
import com.google.common.annotations.GwtIncompatible;
2121
import com.google.common.annotations.J2ktIncompatible;
22+
import java.io.Serial;
2223
import java.io.Serializable;
2324
import org.jspecify.annotations.Nullable;
2425

@@ -56,5 +57,5 @@ public int compareTo(BaseComparable o) {
5657
return s.compareTo(o.s);
5758
}
5859

59-
@GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;
60+
@GwtIncompatible @J2ktIncompatible @Serial private static final long serialVersionUID = 0;
6061
}

android/guava-testlib/src/com/google/common/collect/testing/DerivedComparable.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import com.google.common.annotations.GwtCompatible;
2020
import com.google.common.annotations.GwtIncompatible;
2121
import com.google.common.annotations.J2ktIncompatible;
22+
import java.io.Serial;
2223

2324
/**
2425
* Simple derived class to verify that we handle generics correctly.
@@ -31,5 +32,5 @@ public DerivedComparable(String s) {
3132
super(s);
3233
}
3334

34-
@GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;
35+
@GwtIncompatible @J2ktIncompatible @Serial private static final long serialVersionUID = 0;
3536
}

android/guava-testlib/src/com/google/common/collect/testing/SafeTreeMap.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import com.google.common.annotations.GwtIncompatible;
2020
import com.google.errorprone.annotations.CanIgnoreReturnValue;
21+
import java.io.Serial;
2122
import java.io.Serializable;
2223
import java.util.AbstractSet;
2324
import java.util.Collection;
@@ -325,5 +326,5 @@ public String toString() {
325326
return delegate.toString();
326327
}
327328

328-
private static final long serialVersionUID = 0L;
329+
@Serial private static final long serialVersionUID = 0L;
329330
}

android/guava-testlib/src/com/google/common/collect/testing/SafeTreeSet.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import com.google.common.annotations.GwtIncompatible;
2020
import com.google.errorprone.annotations.CanIgnoreReturnValue;
21+
import java.io.Serial;
2122
import java.io.Serializable;
2223
import java.util.Collection;
2324
import java.util.Comparator;
@@ -253,5 +254,5 @@ public String toString() {
253254
return delegate.toString();
254255
}
255256

256-
private static final long serialVersionUID = 0L;
257+
@Serial private static final long serialVersionUID = 0L;
257258
}

android/guava-testlib/src/com/google/common/collect/testing/features/ConflictingRequirementsException.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import com.google.common.annotations.GwtCompatible;
2020
import com.google.common.annotations.GwtIncompatible;
2121
import com.google.common.annotations.J2ktIncompatible;
22+
import java.io.Serial;
2223
import java.util.Set;
2324

2425
/**
@@ -51,5 +52,5 @@ public String getMessage() {
5152
return super.getMessage() + " (source: " + source + ")";
5253
}
5354

54-
@GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;
55+
@GwtIncompatible @J2ktIncompatible @Serial private static final long serialVersionUID = 0;
5556
}

android/guava-testlib/src/com/google/common/collect/testing/features/TesterRequirements.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import com.google.common.annotations.GwtCompatible;
2222
import com.google.common.annotations.GwtIncompatible;
2323
import com.google.common.annotations.J2ktIncompatible;
24+
import java.io.Serial;
2425
import java.util.Collections;
2526
import java.util.Set;
2627
import org.jspecify.annotations.Nullable;
@@ -80,5 +81,5 @@ public String toString() {
8081
return "{TesterRequirements: present=" + presentFeatures + ", absent=" + absentFeatures + "}";
8182
}
8283

83-
@GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;
84+
@GwtIncompatible @J2ktIncompatible @Serial private static final long serialVersionUID = 0;
8485
}

android/guava-testlib/src/com/google/common/collect/testing/google/BiMapInverseTester.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import com.google.common.collect.testing.Helpers;
2626
import com.google.common.collect.testing.features.CollectionFeature;
2727
import com.google.common.testing.SerializableTester;
28+
import java.io.Serial;
2829
import java.io.Serializable;
2930
import java.lang.reflect.Method;
3031
import java.util.Collections;
@@ -68,7 +69,7 @@ private static class BiMapPair<K, V> implements Serializable {
6869
this.backward = original.inverse();
6970
}
7071

71-
@GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;
72+
@GwtIncompatible @J2ktIncompatible @Serial private static final long serialVersionUID = 0;
7273
}
7374

7475
/**

android/guava-testlib/test/com/google/common/testing/SerializableTesterTest.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package com.google.common.testing;
1818

19+
import java.io.Serial;
1920
import java.io.Serializable;
2021
import junit.framework.AssertionFailedError;
2122
import junit.framework.TestCase;
@@ -77,11 +78,11 @@ public void testObjectWhichIsEqualButChangesClass() {
7778
}
7879

7980
private static class ClassWhichDoesNotImplementEquals implements Serializable {
80-
private static final long serialVersionUID = 1L;
81+
@Serial private static final long serialVersionUID = 1L;
8182
}
8283

8384
private static class ClassWhichIsAlwaysEqualButHasDifferentHashcodes implements Serializable {
84-
private static final long serialVersionUID = 2L;
85+
@Serial private static final long serialVersionUID = 2L;
8586

8687
@SuppressWarnings("EqualsHashCode")
8788
@Override
@@ -91,7 +92,7 @@ public boolean equals(@Nullable Object other) {
9192
}
9293

9394
private static class ObjectWhichIsEqualButChangesClass implements Serializable {
94-
private static final long serialVersionUID = 1L;
95+
@Serial private static final long serialVersionUID = 1L;
9596

9697
@Override
9798
public boolean equals(@Nullable Object other) {

android/guava-tests/test/com/google/common/base/FunctionsTest.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import com.google.common.testing.EqualsTester;
2828
import com.google.common.testing.NullPointerTester;
2929
import com.google.common.testing.SerializableTester;
30+
import java.io.Serial;
3031
import java.io.Serializable;
3132
import java.util.Map;
3233
import junit.framework.TestCase;
@@ -368,7 +369,7 @@ public void testConstantSerializable() {
368369

369370
private static class CountingSupplier implements Supplier<Integer>, Serializable {
370371

371-
@GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;
372+
@GwtIncompatible @J2ktIncompatible @Serial private static final long serialVersionUID = 0;
372373

373374
private int value;
374375

android/guava-tests/test/com/google/common/base/PredicatesTest.java

+5-3
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import com.google.common.testing.EqualsTester;
2929
import com.google.common.testing.NullPointerTester;
3030
import com.google.common.testing.SerializableTester;
31+
import java.io.Serial;
3132
import java.io.Serializable;
3233
import java.util.ArrayList;
3334
import java.util.Arrays;
@@ -61,7 +62,8 @@ public boolean apply(@Nullable Integer i) {
6162

6263
/** Instantiable predicate with reasonable hashCode() and equals() methods. */
6364
static class IsOdd implements Predicate<@Nullable Integer>, Serializable {
64-
@GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0x150ddL;
65+
@GwtIncompatible @J2ktIncompatible @Serial
66+
private static final long serialVersionUID = 0x150ddL;
6567

6668
@Override
6769
public boolean apply(@Nullable Integer i) {
@@ -718,7 +720,7 @@ public void testIn_serialization() {
718720

719721
public void testIn_handlesNullPointerException() {
720722
class CollectionThatThrowsNullPointerException<T> extends ArrayList<T> {
721-
@GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 1L;
723+
@GwtIncompatible @J2ktIncompatible @Serial private static final long serialVersionUID = 1L;
722724

723725
@Override
724726
public boolean contains(@Nullable Object element) {
@@ -733,7 +735,7 @@ public boolean contains(@Nullable Object element) {
733735

734736
public void testIn_handlesClassCastException() {
735737
class CollectionThatThrowsClassCastException<T> extends ArrayList<T> {
736-
@GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 1L;
738+
@GwtIncompatible @J2ktIncompatible @Serial private static final long serialVersionUID = 1L;
737739

738740
@Override
739741
public boolean contains(@Nullable Object element) {

android/guava-tests/test/com/google/common/base/SuppliersTest.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import com.google.common.testing.ClassSanityTester;
3131
import com.google.common.testing.EqualsTester;
3232
import java.io.NotSerializableException;
33+
import java.io.Serial;
3334
import java.io.Serializable;
3435
import java.time.Duration;
3536
import java.util.ArrayList;
@@ -74,11 +75,11 @@ public Integer get() {
7475
}
7576

7677
static class SerializableCountingSupplier extends CountingSupplier implements Serializable {
77-
@GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0L;
78+
@GwtIncompatible @J2ktIncompatible @Serial private static final long serialVersionUID = 0L;
7879
}
7980

8081
static class SerializableThrowingSupplier extends ThrowingSupplier implements Serializable {
81-
@GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0L;
82+
@GwtIncompatible @J2ktIncompatible @Serial private static final long serialVersionUID = 0L;
8283
}
8384

8485
static void checkMemoize(CountingSupplier countingSupplier, Supplier<Integer> memoizedSupplier) {

android/guava-tests/test/com/google/common/collect/Base.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import com.google.common.annotations.GwtCompatible;
2020
import com.google.common.annotations.GwtIncompatible;
2121
import com.google.common.annotations.J2ktIncompatible;
22+
import java.io.Serial;
2223
import java.io.Serializable;
2324
import org.jspecify.annotations.NullUnmarked;
2425
import org.jspecify.annotations.Nullable;
@@ -54,5 +55,5 @@ public int compareTo(Base o) {
5455
return s.compareTo(o.s);
5556
}
5657

57-
@GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;
58+
@GwtIncompatible @J2ktIncompatible @Serial private static final long serialVersionUID = 0;
5859
}

android/guava-tests/test/com/google/common/collect/Derived.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import com.google.common.annotations.GwtCompatible;
2020
import com.google.common.annotations.GwtIncompatible;
2121
import com.google.common.annotations.J2ktIncompatible;
22+
import java.io.Serial;
2223
import org.jspecify.annotations.NullUnmarked;
2324

2425
/** Simple derived class to verify that we handle generics correctly. */
@@ -29,5 +30,5 @@ public Derived(String s) {
2930
super(s);
3031
}
3132

32-
@GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;
33+
@GwtIncompatible @J2ktIncompatible @Serial private static final long serialVersionUID = 0;
3334
}

android/guava-tests/test/com/google/common/collect/HashMultisetTest.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import com.google.common.collect.testing.google.MultisetTestSuiteBuilder;
2828
import com.google.common.collect.testing.google.TestStringMultisetGenerator;
2929
import com.google.common.testing.SerializableTester;
30+
import java.io.Serial;
3031
import java.io.Serializable;
3132
import junit.framework.Test;
3233
import junit.framework.TestCase;
@@ -115,7 +116,7 @@ private static class MultisetHolder implements Serializable {
115116
this.member = multiset;
116117
}
117118

118-
@GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 1L;
119+
@GwtIncompatible @J2ktIncompatible @Serial private static final long serialVersionUID = 1L;
119120
}
120121

121122
@J2ktIncompatible

android/guava-tests/test/com/google/common/collect/ImmutableMapTest.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
import com.google.common.testing.NullPointerTester;
4848
import java.io.ByteArrayOutputStream;
4949
import java.io.ObjectOutputStream;
50+
import java.io.Serial;
5051
import java.io.Serializable;
5152
import java.util.AbstractMap;
5253
import java.util.Collection;
@@ -873,7 +874,7 @@ public int hashCode() {
873874
return value;
874875
}
875876

876-
@GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 5;
877+
@GwtIncompatible @J2ktIncompatible @Serial private static final long serialVersionUID = 5;
877878
}
878879

879880
public void testMutableValues() {

android/guava-tests/test/com/google/common/collect/ImmutableSortedMapTest.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import com.google.common.collect.testing.google.SortedMapGenerators.ImmutableSortedMapValueListGenerator;
3939
import com.google.common.testing.NullPointerTester;
4040
import com.google.common.testing.SerializableTester;
41+
import java.io.Serial;
4142
import java.io.Serializable;
4243
import java.util.Collections;
4344
import java.util.Comparator;
@@ -676,7 +677,7 @@ public int hashCode() {
676677
return value;
677678
}
678679

679-
@GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 5;
680+
@GwtIncompatible @J2ktIncompatible @Serial private static final long serialVersionUID = 5;
680681
}
681682

682683
public void testMutableValues() {

android/guava-tests/test/com/google/common/collect/LegacyComparable.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import com.google.common.annotations.GwtCompatible;
2222
import com.google.common.annotations.GwtIncompatible;
2323
import com.google.common.annotations.J2ktIncompatible;
24+
import java.io.Serial;
2425
import java.io.Serializable;
2526
import org.jspecify.annotations.NullMarked;
2627
import org.jspecify.annotations.Nullable;
@@ -70,5 +71,5 @@ public int hashCode() {
7071
return value.hashCode();
7172
}
7273

73-
@GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;
74+
@GwtIncompatible @J2ktIncompatible @Serial private static final long serialVersionUID = 0;
7475
}

android/guava-tests/test/com/google/common/collect/ListsTest.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
import com.google.common.collect.testing.google.ListGenerators.CharactersOfStringGenerator;
4949
import com.google.common.testing.NullPointerTester;
5050
import com.google.common.testing.SerializableTester;
51+
import java.io.Serial;
5152
import java.io.Serializable;
5253
import java.util.ArrayList;
5354
import java.util.Collection;
@@ -91,7 +92,7 @@ public Iterator<Integer> iterator() {
9192
return SOME_COLLECTION.iterator();
9293
}
9394

94-
@GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;
95+
@GwtIncompatible @J2ktIncompatible @Serial private static final long serialVersionUID = 0;
9596
}
9697

9798
private static final List<Integer> SOME_LIST = Lists.newArrayList(1, 2, 3, 4);
@@ -108,7 +109,7 @@ public String apply(Number n) {
108109
return String.valueOf(n);
109110
}
110111

111-
@GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;
112+
@GwtIncompatible @J2ktIncompatible @Serial private static final long serialVersionUID = 0;
112113
}
113114

114115
@J2ktIncompatible

android/guava-tests/test/com/google/common/collect/LockHeldAssertingSet.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import static com.google.common.base.Preconditions.checkNotNull;
2020
import static junit.framework.Assert.assertTrue;
2121

22+
import java.io.Serial;
2223
import java.io.Serializable;
2324
import java.util.Collection;
2425
import java.util.Set;
@@ -154,5 +155,5 @@ public <T> T[] toArray(T[] a) {
154155
return super.toArray(a);
155156
}
156157

157-
private static final long serialVersionUID = 0;
158+
@Serial private static final long serialVersionUID = 0;
158159
}

0 commit comments

Comments
 (0)