diff --git a/src/java.base/share/classes/java/io/ObjectStreamClass.java b/src/java.base/share/classes/java/io/ObjectStreamClass.java
index c41e8b1744a08..9a3f96d07852c 100644
--- a/src/java.base/share/classes/java/io/ObjectStreamClass.java
+++ b/src/java.base/share/classes/java/io/ObjectStreamClass.java
@@ -80,7 +80,7 @@
* Java Object Serialization Specification, Section 4, "Class Descriptors"
* @since 1.1
*/
-public class ObjectStreamClass implements Serializable {
+public final class ObjectStreamClass implements Serializable {
/** serialPersistentFields value indicating no serializable fields */
public static final ObjectStreamField[] NO_FIELDS =
diff --git a/test/jdk/jdk/internal/reflect/CallerSensitive/CheckCSMs.java b/test/jdk/jdk/internal/reflect/CallerSensitive/CheckCSMs.java
index 35dfb8d19c373..0a9d75e27a87c 100644
--- a/test/jdk/jdk/internal/reflect/CallerSensitive/CheckCSMs.java
+++ b/test/jdk/jdk/internal/reflect/CallerSensitive/CheckCSMs.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, 2021, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2022, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -68,7 +68,6 @@ public class CheckCSMs {
// over time. Do not add any new one to this list.
private static Set KNOWN_NON_FINAL_CSMS =
Set.of("java/io/ObjectStreamField#getType ()Ljava/lang/Class;",
- "java/io/ObjectStreamClass#forClass ()Ljava/lang/Class;",
"java/lang/Runtime#load (Ljava/lang/String;)V",
"java/lang/Runtime#loadLibrary (Ljava/lang/String;)V",
"java/lang/Thread#getContextClassLoader ()Ljava/lang/ClassLoader;",
@@ -91,11 +90,13 @@ public static void main(String[] args) throws Exception {
CheckCSMs checkCSMs = new CheckCSMs();
Set result = checkCSMs.run(getPlatformClasses());
if (!KNOWN_NON_FINAL_CSMS.equals(result)) {
- Set diff = new HashSet<>(result);
- diff.removeAll(KNOWN_NON_FINAL_CSMS);
- throw new RuntimeException("Unexpected non-final instance method: " +
- result.stream().sorted()
- .collect(Collectors.joining("\n", "\n", "")));
+ Set extras = new HashSet<>(result);
+ extras.removeAll(KNOWN_NON_FINAL_CSMS);
+ Set missing = new HashSet<>(KNOWN_NON_FINAL_CSMS);
+ missing.removeAll(result);
+ throw new RuntimeException("Mismatch in non-final instance methods.\n" +
+ "Extra methods:\n" + String.join("\n", extras) + "\n" +
+ "Missing methods:\n" + String.join("\n", missing) + "\n");
}
// check if all csm methods with a trailing Class parameter are supported