From 3fc36494218678f75e0d60386c5e5cfe2886e27a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9C=A8=E8=91=89=20Scarlet?=
<93977077+mukjepscarlet@users.noreply.github.com>
Date: Mon, 23 Mar 2026 22:38:04 +0800
Subject: [PATCH 1/2] Add dependency
---
gson/pom.xml | 6 ++++++
pom.xml | 6 ++++++
2 files changed, 12 insertions(+)
diff --git a/gson/pom.xml b/gson/pom.xml
index 7918efc65d..5fb21e8b15 100644
--- a/gson/pom.xml
+++ b/gson/pom.xml
@@ -53,6 +53,12 @@
2.47.0
+
+ org.jspecify
+ jspecify
+ provided
+
+
junit
junit
diff --git a/pom.xml b/pom.xml
index 7dfbc2aabc..1d4d944e3a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -87,6 +87,12 @@
4.13.2
+
+ org.jspecify
+ jspecify
+ 1.0.0
+
+
com.google.truth
truth
From f85b75a63341b210a875c7b38156c94ecd105e5a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9C=A8=E8=91=89=20Scarlet?=
<93977077+mukjepscarlet@users.noreply.github.com>
Date: Mon, 23 Mar 2026 23:38:12 +0800
Subject: [PATCH 2/2] progress
---
gson/pom.xml | 2 +-
.../java/com/google/gson/FieldAttributes.java | 3 +-
gson/src/main/java/com/google/gson/Gson.java | 59 +++++++++++--------
.../java/com/google/gson/GsonBuilder.java | 11 ++--
.../main/java/com/google/gson/JsonArray.java | 13 ++--
.../main/java/com/google/gson/JsonObject.java | 21 +++----
.../java/com/google/gson/TypeAdapter.java | 11 ++--
.../com/google/gson/TypeAdapterFactory.java | 3 +-
.../google/gson/annotations/package-info.java | 1 +
.../ReflectionAccessFilterHelper.java | 10 ++--
.../com/google/gson/internal/Streams.java | 7 ++-
.../gson/internal/bind/ArrayTypeAdapter.java | 9 +--
.../bind/CollectionTypeAdapterFactory.java | 9 +--
.../internal/bind/DefaultDateTypeAdapter.java | 3 +-
.../gson/internal/bind/EnumTypeAdapter.java | 7 ++-
.../internal/bind/JavaTimeTypeAdapters.java | 3 +-
...onAdapterAnnotationTypeAdapterFactory.java | 3 +-
.../internal/bind/JsonElementTypeAdapter.java | 6 +-
.../internal/bind/MapTypeAdapterFactory.java | 7 ++-
.../gson/internal/bind/NumberTypeAdapter.java | 7 ++-
.../gson/internal/bind/ObjectTypeAdapter.java | 9 +--
.../bind/ReflectiveTypeAdapterFactory.java | 11 ++--
.../gson/internal/bind/TreeTypeAdapter.java | 3 +-
.../gson/internal/bind/TypeAdapters.java | 11 ++--
.../gson/internal/bind/package-info.java | 19 ++++++
.../google/gson/internal/package-info.java | 1 +
.../gson/internal/reflect/package-info.java | 19 ++++++
.../gson/internal/sql/SqlDateTypeAdapter.java | 3 +-
.../gson/internal/sql/SqlTimeTypeAdapter.java | 3 +-
.../internal/sql/SqlTimestampTypeAdapter.java | 3 +-
.../gson/internal/sql/package-info.java | 19 ++++++
.../java/com/google/gson/package-info.java | 1 +
.../com/google/gson/reflect/package-info.java | 1 +
.../com/google/gson/stream/JsonReader.java | 5 +-
.../com/google/gson/stream/JsonWriter.java | 17 +++---
.../com/google/gson/stream/package-info.java | 1 +
gson/src/main/java/module-info.java | 2 +
37 files changed, 212 insertions(+), 111 deletions(-)
create mode 100644 gson/src/main/java/com/google/gson/internal/bind/package-info.java
create mode 100644 gson/src/main/java/com/google/gson/internal/reflect/package-info.java
create mode 100644 gson/src/main/java/com/google/gson/internal/sql/package-info.java
diff --git a/gson/pom.xml b/gson/pom.xml
index 5fb21e8b15..ec08dfcda9 100644
--- a/gson/pom.xml
+++ b/gson/pom.xml
@@ -56,7 +56,7 @@
org.jspecify
jspecify
- provided
+ compile
diff --git a/gson/src/main/java/com/google/gson/FieldAttributes.java b/gson/src/main/java/com/google/gson/FieldAttributes.java
index b4d3709fb0..5cf0a165cb 100644
--- a/gson/src/main/java/com/google/gson/FieldAttributes.java
+++ b/gson/src/main/java/com/google/gson/FieldAttributes.java
@@ -22,6 +22,7 @@
import java.util.Arrays;
import java.util.Collection;
import java.util.Objects;
+import org.jspecify.annotations.Nullable;
/**
* A data object that stores attributes of a field.
@@ -113,7 +114,7 @@ public Class> getDeclaredClass() {
* @param annotation the class of the annotation that will be retrieved
* @return the annotation instance if it is bound to the field; otherwise {@code null}
*/
- public T getAnnotation(Class annotation) {
+ public @Nullable T getAnnotation(Class annotation) {
return field.getAnnotation(annotation);
}
diff --git a/gson/src/main/java/com/google/gson/Gson.java b/gson/src/main/java/com/google/gson/Gson.java
index a06f290747..52b3c2893b 100644
--- a/gson/src/main/java/com/google/gson/Gson.java
+++ b/gson/src/main/java/com/google/gson/Gson.java
@@ -45,6 +45,7 @@
import java.util.Objects;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
+import org.jspecify.annotations.Nullable;
/**
* This is the main class for using Gson. Gson is typically used by first constructing a Gson
@@ -148,7 +149,7 @@ public final class Gson {
* TypeAdapter} as value.
*/
@SuppressWarnings("ThreadLocalUsage")
- private final ThreadLocal