diff --git a/core/modules/jsonapi/src/Normalizer/ConfigEntityDenormalizer.php b/core/modules/jsonapi/src/Normalizer/ConfigEntityDenormalizer.php
index 95a6f30469bc3b38fa38405c553741316febb27d..d803f6e3008bea2b495068387c0ab17ec2ab4e02 100644
--- a/core/modules/jsonapi/src/Normalizer/ConfigEntityDenormalizer.php
+++ b/core/modules/jsonapi/src/Normalizer/ConfigEntityDenormalizer.php
@@ -16,11 +16,6 @@
  */
 final class ConfigEntityDenormalizer extends EntityDenormalizerBase {
 
-  /**
-   * {@inheritdoc}
-   */
-  protected $supportedInterfaceOrClass = ConfigEntityInterface::class;
-
   /**
    * {@inheritdoc}
    */
diff --git a/core/modules/jsonapi/src/Normalizer/ContentEntityDenormalizer.php b/core/modules/jsonapi/src/Normalizer/ContentEntityDenormalizer.php
index f513e787bf0b47d35c9bba58605666fb672e0eaf..112c02212a412fd7a1b4089dc812711808636278 100644
--- a/core/modules/jsonapi/src/Normalizer/ContentEntityDenormalizer.php
+++ b/core/modules/jsonapi/src/Normalizer/ContentEntityDenormalizer.php
@@ -17,11 +17,6 @@
  */
 final class ContentEntityDenormalizer extends EntityDenormalizerBase {
 
-  /**
-   * {@inheritdoc}
-   */
-  protected $supportedInterfaceOrClass = ContentEntityInterface::class;
-
   /**
    * Prepares the input data to create the entity.
    *
diff --git a/core/modules/jsonapi/src/Normalizer/DataNormalizer.php b/core/modules/jsonapi/src/Normalizer/DataNormalizer.php
index 67217fceb2a7eb41fcd2be0146eb98de369e600b..7c3a039552e23af2c829db2330ab77e0d12521b4 100644
--- a/core/modules/jsonapi/src/Normalizer/DataNormalizer.php
+++ b/core/modules/jsonapi/src/Normalizer/DataNormalizer.php
@@ -12,11 +12,6 @@
  */
 class DataNormalizer extends NormalizerBase {
 
-  /**
-   * {@inheritdoc}
-   */
-  protected $supportedInterfaceOrClass = Data::class;
-
   /**
    * {@inheritdoc}
    */
diff --git a/core/modules/jsonapi/src/Normalizer/EntityAccessDeniedHttpExceptionNormalizer.php b/core/modules/jsonapi/src/Normalizer/EntityAccessDeniedHttpExceptionNormalizer.php
index beedcc24be0289e6ff0b638bbc0986da72710cd7..0b608f48b22a385bc994865ade122cdbddeefa7a 100644
--- a/core/modules/jsonapi/src/Normalizer/EntityAccessDeniedHttpExceptionNormalizer.php
+++ b/core/modules/jsonapi/src/Normalizer/EntityAccessDeniedHttpExceptionNormalizer.php
@@ -23,11 +23,6 @@
  */
 class EntityAccessDeniedHttpExceptionNormalizer extends HttpExceptionNormalizer {
 
-  /**
-   * {@inheritdoc}
-   */
-  protected $supportedInterfaceOrClass = EntityAccessDeniedHttpException::class;
-
   /**
    * {@inheritdoc}
    */
diff --git a/core/modules/jsonapi/src/Normalizer/EntityReferenceFieldNormalizer.php b/core/modules/jsonapi/src/Normalizer/EntityReferenceFieldNormalizer.php
index 79561f22c74e34398b61bac455529621347e86fa..0c379138f251f4382b38ffe1460a94d496fde11e 100644
--- a/core/modules/jsonapi/src/Normalizer/EntityReferenceFieldNormalizer.php
+++ b/core/modules/jsonapi/src/Normalizer/EntityReferenceFieldNormalizer.php
@@ -24,11 +24,6 @@
  */
 class EntityReferenceFieldNormalizer extends FieldNormalizer {
 
-  /**
-   * {@inheritdoc}
-   */
-  protected $supportedInterfaceOrClass = EntityReferenceFieldItemListInterface::class;
-
   /**
    * {@inheritdoc}
    */
diff --git a/core/modules/jsonapi/src/Normalizer/FieldItemNormalizer.php b/core/modules/jsonapi/src/Normalizer/FieldItemNormalizer.php
index 0dcca6bff3ce66d3256f65df0faf0494f6c9a447..82fbd0ecde28e83db6d7ff546e7b6dde2e67b023 100644
--- a/core/modules/jsonapi/src/Normalizer/FieldItemNormalizer.php
+++ b/core/modules/jsonapi/src/Normalizer/FieldItemNormalizer.php
@@ -29,13 +29,6 @@ class FieldItemNormalizer extends NormalizerBase implements DenormalizerInterfac
 
   use SerializedColumnNormalizerTrait;
 
-  /**
-   * The interface or class that this Normalizer supports.
-   *
-   * @var string
-   */
-  protected $supportedInterfaceOrClass = FieldItemInterface::class;
-
   /**
    * The entity type manager.
    *
diff --git a/core/modules/jsonapi/src/Normalizer/FieldNormalizer.php b/core/modules/jsonapi/src/Normalizer/FieldNormalizer.php
index 159f7eb381234db46bd937f38d66f27a6452a694..fd1fd1bb60190af86c6c73d7d7e593d2b961c451 100644
--- a/core/modules/jsonapi/src/Normalizer/FieldNormalizer.php
+++ b/core/modules/jsonapi/src/Normalizer/FieldNormalizer.php
@@ -20,13 +20,6 @@
  */
 class FieldNormalizer extends NormalizerBase implements DenormalizerInterface {
 
-  /**
-   * The interface or class that this Normalizer supports.
-   *
-   * @var string
-   */
-  protected $supportedInterfaceOrClass = FieldItemListInterface::class;
-
   /**
    * {@inheritdoc}
    */
diff --git a/core/modules/jsonapi/src/Normalizer/HttpExceptionNormalizer.php b/core/modules/jsonapi/src/Normalizer/HttpExceptionNormalizer.php
index 3ba7ea111d0ce85581d8316b9e061145ba2da141..73700aa0fd2aaa2bd9675bc15559d21f17669a98 100644
--- a/core/modules/jsonapi/src/Normalizer/HttpExceptionNormalizer.php
+++ b/core/modules/jsonapi/src/Normalizer/HttpExceptionNormalizer.php
@@ -21,13 +21,6 @@
  */
 class HttpExceptionNormalizer extends NormalizerBase {
 
-  /**
-   * The interface or class that this Normalizer supports.
-   *
-   * @var string
-   */
-  protected $supportedInterfaceOrClass = HttpException::class;
-
   /**
    * The current user making the request.
    *
diff --git a/core/modules/jsonapi/src/Normalizer/JsonApiDocumentTopLevelNormalizer.php b/core/modules/jsonapi/src/Normalizer/JsonApiDocumentTopLevelNormalizer.php
index 5df231f449d9c4993227289cf22db861ba88d7cb..d12ec670f41ee185c05a2394163d0818c38867c1 100644
--- a/core/modules/jsonapi/src/Normalizer/JsonApiDocumentTopLevelNormalizer.php
+++ b/core/modules/jsonapi/src/Normalizer/JsonApiDocumentTopLevelNormalizer.php
@@ -35,11 +35,6 @@
  */
 class JsonApiDocumentTopLevelNormalizer extends NormalizerBase implements DenormalizerInterface, NormalizerInterface {
 
-  /**
-   * {@inheritdoc}
-   */
-  protected $supportedInterfaceOrClass = JsonApiDocumentTopLevel::class;
-
   /**
    * The entity type manager.
    *
diff --git a/core/modules/jsonapi/src/Normalizer/LinkCollectionNormalizer.php b/core/modules/jsonapi/src/Normalizer/LinkCollectionNormalizer.php
index acd299766a9b9c92eb16190587407512a310fe67..96a50bc3e446e4a283476a5eb9624a7c756adb6d 100644
--- a/core/modules/jsonapi/src/Normalizer/LinkCollectionNormalizer.php
+++ b/core/modules/jsonapi/src/Normalizer/LinkCollectionNormalizer.php
@@ -47,11 +47,6 @@ class LinkCollectionNormalizer extends NormalizerBase {
    */
   const LINK_CONTEXT = 'jsonapi_links_object_context';
 
-  /**
-   * {@inheritdoc}
-   */
-  protected $supportedInterfaceOrClass = LinkCollection::class;
-
   /**
    * A random string to use when hashing links.
    *
diff --git a/core/modules/jsonapi/src/Normalizer/RelationshipNormalizer.php b/core/modules/jsonapi/src/Normalizer/RelationshipNormalizer.php
index 09fd83168f5afb152eb46f9b24ebbb80c125a0ef..90e2d79cb689a62d607b57c9f645bb92943834fa 100644
--- a/core/modules/jsonapi/src/Normalizer/RelationshipNormalizer.php
+++ b/core/modules/jsonapi/src/Normalizer/RelationshipNormalizer.php
@@ -12,11 +12,6 @@
  */
 class RelationshipNormalizer extends NormalizerBase {
 
-  /**
-   * {@inheritdoc}
-   */
-  protected $supportedInterfaceOrClass = Relationship::class;
-
   /**
    * {@inheritdoc}
    */
diff --git a/core/modules/jsonapi/src/Normalizer/ResourceIdentifierNormalizer.php b/core/modules/jsonapi/src/Normalizer/ResourceIdentifierNormalizer.php
index a7d66623f0c29fefdeb8766afaaa28ad006e5412..87454df8d750df22ad10c8b46632dfacf6ef6ba2 100644
--- a/core/modules/jsonapi/src/Normalizer/ResourceIdentifierNormalizer.php
+++ b/core/modules/jsonapi/src/Normalizer/ResourceIdentifierNormalizer.php
@@ -23,11 +23,6 @@
  */
 class ResourceIdentifierNormalizer extends NormalizerBase implements DenormalizerInterface {
 
-  /**
-   * {@inheritdoc}
-   */
-  protected $supportedInterfaceOrClass = ResourceIdentifier::class;
-
   /**
    * The entity field manager.
    *
diff --git a/core/modules/jsonapi/src/Normalizer/ResourceObjectNormalizer.php b/core/modules/jsonapi/src/Normalizer/ResourceObjectNormalizer.php
index 53671cd2b9307bdf1cb3fa3c1572aceb03e34c8b..dfcbc3ca9b2e346e2b3a28f5b86fe28a24d9263b 100644
--- a/core/modules/jsonapi/src/Normalizer/ResourceObjectNormalizer.php
+++ b/core/modules/jsonapi/src/Normalizer/ResourceObjectNormalizer.php
@@ -22,11 +22,6 @@
  */
 class ResourceObjectNormalizer extends NormalizerBase {
 
-  /**
-   * {@inheritdoc}
-   */
-  protected $supportedInterfaceOrClass = ResourceObject::class;
-
   /**
    * The entity normalization cacher.
    *
diff --git a/core/modules/jsonapi/src/Normalizer/UnprocessableHttpEntityExceptionNormalizer.php b/core/modules/jsonapi/src/Normalizer/UnprocessableHttpEntityExceptionNormalizer.php
index 9a155296d8de99fb3f89c2f1a142199e069ed610..5635c24fe6fb98b0ba032e96248ddb6f99fc441f 100644
--- a/core/modules/jsonapi/src/Normalizer/UnprocessableHttpEntityExceptionNormalizer.php
+++ b/core/modules/jsonapi/src/Normalizer/UnprocessableHttpEntityExceptionNormalizer.php
@@ -23,13 +23,6 @@
  */
 class UnprocessableHttpEntityExceptionNormalizer extends HttpExceptionNormalizer {
 
-  /**
-   * The interface or class that this Normalizer supports.
-   *
-   * @var string
-   */
-  protected $supportedInterfaceOrClass = UnprocessableHttpEntityException::class;
-
   /**
    * {@inheritdoc}
    */
diff --git a/core/modules/jsonapi/tests/modules/jsonapi_test_data_type/src/Normalizer/StringNormalizer.php b/core/modules/jsonapi/tests/modules/jsonapi_test_data_type/src/Normalizer/StringNormalizer.php
index 90cf00e2e9b0dd76f544f34d1170393616e15702..5694d161a543796e2769ea8c96ee369d5cd8abf8 100644
--- a/core/modules/jsonapi/tests/modules/jsonapi_test_data_type/src/Normalizer/StringNormalizer.php
+++ b/core/modules/jsonapi/tests/modules/jsonapi_test_data_type/src/Normalizer/StringNormalizer.php
@@ -11,11 +11,6 @@
  */
 class StringNormalizer extends NormalizerBase implements DenormalizerInterface {
 
-  /**
-   * {@inheritdoc}
-   */
-  protected $supportedInterfaceOrClass = StringData::class;
-
   /**
    * {@inheritdoc}
    */
@@ -33,8 +28,8 @@ public function denormalize($data, $class, $format = NULL, array $context = []):
   /**
    * {@inheritdoc}
    */
-  public function hasCacheableSupportsMethod(): bool {
-    return TRUE;
+  public function getSupportedTypes(?string $format): array {
+    return [StringData::class => TRUE];
   }
 
 }
diff --git a/core/modules/jsonapi/tests/modules/jsonapi_test_data_type/src/Normalizer/TraversableObjectNormalizer.php b/core/modules/jsonapi/tests/modules/jsonapi_test_data_type/src/Normalizer/TraversableObjectNormalizer.php
index daca730a4b3254fff21965e68ceb389eaaa1f80d..b2b493cb4cafc7f3a4eb0e2dd1774c78218ebd79 100644
--- a/core/modules/jsonapi/tests/modules/jsonapi_test_data_type/src/Normalizer/TraversableObjectNormalizer.php
+++ b/core/modules/jsonapi/tests/modules/jsonapi_test_data_type/src/Normalizer/TraversableObjectNormalizer.php
@@ -10,11 +10,6 @@
  */
 class TraversableObjectNormalizer extends NormalizerBase {
 
-  /**
-   * {@inheritdoc}
-   */
-  protected $supportedInterfaceOrClass = TraversableObject::class;
-
   /**
    * {@inheritdoc}
    */
@@ -25,8 +20,8 @@ public function normalize($object, $format = NULL, array $context = []): array|s
   /**
    * {@inheritdoc}
    */
-  public function hasCacheableSupportsMethod(): bool {
-    return TRUE;
+  public function getSupportedTypes(?string $format): array {
+    return [TraversableObject::class => TRUE];
   }
 
 }
diff --git a/core/modules/jsonapi/tests/modules/jsonapi_test_field_type/src/Normalizer/StringNormalizer.php b/core/modules/jsonapi/tests/modules/jsonapi_test_field_type/src/Normalizer/StringNormalizer.php
index 1c6f306a4e5d360e7ea8a28ad53c578c04b62460..20d901e11bbbed12c47833da27f5454e6428abe8 100644
--- a/core/modules/jsonapi/tests/modules/jsonapi_test_field_type/src/Normalizer/StringNormalizer.php
+++ b/core/modules/jsonapi/tests/modules/jsonapi_test_field_type/src/Normalizer/StringNormalizer.php
@@ -11,11 +11,6 @@
  */
 class StringNormalizer extends FieldItemNormalizer implements DenormalizerInterface {
 
-  /**
-   * {@inheritdoc}
-   */
-  protected $supportedInterfaceOrClass = StringItem::class;
-
   /**
    * {@inheritdoc}
    */
@@ -34,4 +29,11 @@ protected function constructValue($data, $context) {
     return $data;
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function getSupportedTypes(?string $format): array {
+    return [StringItem::class => TRUE];
+  }
+
 }
diff --git a/core/modules/layout_builder/src/Normalizer/LayoutEntityDisplayNormalizer.php b/core/modules/layout_builder/src/Normalizer/LayoutEntityDisplayNormalizer.php
index 21fafe0f64eeaed83c35aafe5731a4733d320874..a992b46ecd4bac629b1137b42a8ddc8921f21a6b 100644
--- a/core/modules/layout_builder/src/Normalizer/LayoutEntityDisplayNormalizer.php
+++ b/core/modules/layout_builder/src/Normalizer/LayoutEntityDisplayNormalizer.php
@@ -13,11 +13,6 @@
  */
 class LayoutEntityDisplayNormalizer extends ConfigEntityNormalizer {
 
-  /**
-   * {@inheritdoc}
-   */
-  protected $supportedInterfaceOrClass = LayoutEntityDisplayInterface::class;
-
   /**
    * {@inheritdoc}
    */
@@ -33,8 +28,10 @@ protected static function getDataWithoutInternals(array $data) {
   /**
    * {@inheritdoc}
    */
-  public function hasCacheableSupportsMethod(): bool {
-    return TRUE;
+  public function getSupportedTypes(?string $format): array {
+    return [
+      LayoutEntityDisplayInterface::class => TRUE,
+    ];
   }
 
 }
diff --git a/core/modules/serialization/src/Normalizer/ComplexDataNormalizer.php b/core/modules/serialization/src/Normalizer/ComplexDataNormalizer.php
index 3c950308c7191be4e4e5e0d4434a5845a05924fb..008216b60f620ce8abce4f51e1453c097c45ba8e 100644
--- a/core/modules/serialization/src/Normalizer/ComplexDataNormalizer.php
+++ b/core/modules/serialization/src/Normalizer/ComplexDataNormalizer.php
@@ -17,11 +17,6 @@
  */
 class ComplexDataNormalizer extends NormalizerBase {
 
-  /**
-   * {@inheritdoc}
-   */
-  protected $supportedInterfaceOrClass = ComplexDataInterface::class;
-
   /**
    * {@inheritdoc}
    */
diff --git a/core/modules/serialization/src/Normalizer/ConfigEntityNormalizer.php b/core/modules/serialization/src/Normalizer/ConfigEntityNormalizer.php
index 6c24a270f67ff9db9c687a9a22f742765a6af1b5..589e92dcd3cec2bc40ff5c756d3a8eb0ce70dda9 100644
--- a/core/modules/serialization/src/Normalizer/ConfigEntityNormalizer.php
+++ b/core/modules/serialization/src/Normalizer/ConfigEntityNormalizer.php
@@ -9,11 +9,6 @@
  */
 class ConfigEntityNormalizer extends EntityNormalizer {
 
-  /**
-   * {@inheritdoc}
-   */
-  protected $supportedInterfaceOrClass = ConfigEntityInterface::class;
-
   /**
    * {@inheritdoc}
    */
diff --git a/core/modules/serialization/src/Normalizer/ContentEntityNormalizer.php b/core/modules/serialization/src/Normalizer/ContentEntityNormalizer.php
index 7f8055eef90cd00ffcac2a0c2c7c130ef5b53f5c..94ecc50a8ba582bbea3d5c399ac548745481bd03 100644
--- a/core/modules/serialization/src/Normalizer/ContentEntityNormalizer.php
+++ b/core/modules/serialization/src/Normalizer/ContentEntityNormalizer.php
@@ -10,11 +10,6 @@
  */
 class ContentEntityNormalizer extends EntityNormalizer {
 
-  /**
-   * {@inheritdoc}
-   */
-  protected $supportedInterfaceOrClass = ContentEntityInterface::class;
-
   /**
    * {@inheritdoc}
    */
diff --git a/core/modules/serialization/src/Normalizer/DateTimeIso8601Normalizer.php b/core/modules/serialization/src/Normalizer/DateTimeIso8601Normalizer.php
index 9139853b4460b8d38aeb1bd8b4b36fc5ad092dfe..12e79be415b53d3e44be392541afc7b8a1a90142 100644
--- a/core/modules/serialization/src/Normalizer/DateTimeIso8601Normalizer.php
+++ b/core/modules/serialization/src/Normalizer/DateTimeIso8601Normalizer.php
@@ -29,11 +29,6 @@ class DateTimeIso8601Normalizer extends DateTimeNormalizer {
     'date-only' => 'Y-m-d',
   ];
 
-  /**
-   * {@inheritdoc}
-   */
-  protected $supportedInterfaceOrClass = DateTimeIso8601::class;
-
   /**
    * {@inheritdoc}
    */
diff --git a/core/modules/serialization/src/Normalizer/DateTimeNormalizer.php b/core/modules/serialization/src/Normalizer/DateTimeNormalizer.php
index 85e256641725b9d7926ac923fc59150b1802fc64..c1fdf1fb1834ed9f4ddbbbb8ba8c003e90baee4c 100644
--- a/core/modules/serialization/src/Normalizer/DateTimeNormalizer.php
+++ b/core/modules/serialization/src/Normalizer/DateTimeNormalizer.php
@@ -29,11 +29,6 @@ class DateTimeNormalizer extends NormalizerBase implements DenormalizerInterface
     'ISO 8601' => \DateTime::ISO8601,
   ];
 
-  /**
-   * {@inheritdoc}
-   */
-  protected $supportedInterfaceOrClass = DateTimeInterface::class;
-
   /**
    * The system's date configuration.
    *
diff --git a/core/modules/serialization/src/Normalizer/EntityNormalizer.php b/core/modules/serialization/src/Normalizer/EntityNormalizer.php
index 25557776622dead3e95a52b7d2da174bcaabbeed..d20e3b68a63f0b197d9aa18f569791bdbc7ea2ee 100644
--- a/core/modules/serialization/src/Normalizer/EntityNormalizer.php
+++ b/core/modules/serialization/src/Normalizer/EntityNormalizer.php
@@ -16,11 +16,6 @@ class EntityNormalizer extends ComplexDataNormalizer implements DenormalizerInte
 
   use FieldableEntityNormalizerTrait;
 
-  /**
-   * {@inheritdoc}
-   */
-  protected $supportedInterfaceOrClass = EntityInterface::class;
-
   /**
    * Constructs an EntityNormalizer object.
    *
diff --git a/core/modules/serialization/src/Normalizer/EntityReferenceFieldItemNormalizer.php b/core/modules/serialization/src/Normalizer/EntityReferenceFieldItemNormalizer.php
index 8a0277f39a52a4b967288eafaf1e340ac4c26aee..086f772e4802f6580f9e7356194dbd0ecaaf69ee 100644
--- a/core/modules/serialization/src/Normalizer/EntityReferenceFieldItemNormalizer.php
+++ b/core/modules/serialization/src/Normalizer/EntityReferenceFieldItemNormalizer.php
@@ -15,11 +15,6 @@ class EntityReferenceFieldItemNormalizer extends FieldItemNormalizer {
 
   use EntityReferenceFieldItemNormalizerTrait;
 
-  /**
-   * {@inheritdoc}
-   */
-  protected $supportedInterfaceOrClass = EntityReferenceItem::class;
-
   /**
    * The entity repository.
    *
diff --git a/core/modules/serialization/src/Normalizer/FieldItemNormalizer.php b/core/modules/serialization/src/Normalizer/FieldItemNormalizer.php
index a12ebddc57264b8ee50680f438864826f38c8e65..90efb55bc5dcf1ebe4728b291d1fb7804aa616f1 100644
--- a/core/modules/serialization/src/Normalizer/FieldItemNormalizer.php
+++ b/core/modules/serialization/src/Normalizer/FieldItemNormalizer.php
@@ -14,11 +14,6 @@ class FieldItemNormalizer extends ComplexDataNormalizer implements DenormalizerI
   use FieldableEntityNormalizerTrait;
   use SerializedColumnNormalizerTrait;
 
-  /**
-   * {@inheritdoc}
-   */
-  protected $supportedInterfaceOrClass = FieldItemInterface::class;
-
   /**
    * {@inheritdoc}
    */
diff --git a/core/modules/serialization/src/Normalizer/FieldNormalizer.php b/core/modules/serialization/src/Normalizer/FieldNormalizer.php
index e1067f7bcec56a30ca3cc335544d31fea5be4874..06b545982696cf897d5a312d2e8462adae728f46 100644
--- a/core/modules/serialization/src/Normalizer/FieldNormalizer.php
+++ b/core/modules/serialization/src/Normalizer/FieldNormalizer.php
@@ -18,11 +18,6 @@
  */
 class FieldNormalizer extends ListNormalizer implements DenormalizerInterface {
 
-  /**
-   * {@inheritdoc}
-   */
-  protected $supportedInterfaceOrClass = FieldItemListInterface::class;
-
   /**
    * {@inheritdoc}
    */
diff --git a/core/modules/serialization/src/Normalizer/ListNormalizer.php b/core/modules/serialization/src/Normalizer/ListNormalizer.php
index f333944cbcb258a50fdac76a556f4e92ecdccbfc..44a2ef742ec8fd071672abde1d4e5f8ca7b92f7d 100644
--- a/core/modules/serialization/src/Normalizer/ListNormalizer.php
+++ b/core/modules/serialization/src/Normalizer/ListNormalizer.php
@@ -15,11 +15,6 @@
  */
 class ListNormalizer extends NormalizerBase {
 
-  /**
-   * {@inheritdoc}
-   */
-  protected $supportedInterfaceOrClass = ListInterface::class;
-
   /**
    * {@inheritdoc}
    */
@@ -34,8 +29,10 @@ public function normalize($object, $format = NULL, array $context = []): array|s
   /**
    * {@inheritdoc}
    */
-  public function hasCacheableSupportsMethod(): bool {
-    return TRUE;
+  public function getSupportedTypes(?string $format): array {
+    return [
+      ListInterface::class => TRUE,
+    ];
   }
 
 }
diff --git a/core/modules/serialization/src/Normalizer/MarkupNormalizer.php b/core/modules/serialization/src/Normalizer/MarkupNormalizer.php
index 167fbd6f0e32199abec0ef39909afe9c0bf23829..f7ba6bb1e58d6c34dc3d395ebff2396deab453c5 100644
--- a/core/modules/serialization/src/Normalizer/MarkupNormalizer.php
+++ b/core/modules/serialization/src/Normalizer/MarkupNormalizer.php
@@ -9,11 +9,6 @@
  */
 class MarkupNormalizer extends NormalizerBase {
 
-  /**
-   * {@inheritdoc}
-   */
-  protected $supportedInterfaceOrClass = MarkupInterface::class;
-
   /**
    * {@inheritdoc}
    */
diff --git a/core/modules/serialization/src/Normalizer/NormalizerBase.php b/core/modules/serialization/src/Normalizer/NormalizerBase.php
index c3c344b5ca3c6ebb56ff26329e99fcc2bf26859a..ff0a13fc1c79527e4ef0946856f7ceebc25aa3ca 100644
--- a/core/modules/serialization/src/Normalizer/NormalizerBase.php
+++ b/core/modules/serialization/src/Normalizer/NormalizerBase.php
@@ -13,13 +13,6 @@ abstract class NormalizerBase implements SerializerAwareInterface, CacheableNorm
 
   use SerializerAwareTrait;
 
-  /**
-   * The interface or class that this Normalizer supports.
-   *
-   * @var string|array
-   */
-  protected $supportedInterfaceOrClass;
-
   /**
    * List of formats which supports (de-)normalization.
    *
@@ -37,7 +30,13 @@ public function supportsNormalization($data, string $format = NULL, array $conte
       return FALSE;
     }
 
-    $supported = (array) $this->supportedInterfaceOrClass;
+    if (property_exists($this, 'supportedInterfaceOrClass')) {
+      @trigger_error('Defining ' . static::class . '::supportedInterfaceOrClass property is deprecated in drupal:10.2.0 and is removed from drupal:11.0.0. Use getSupportedTypes() instead. See https://www.drupal.org/node/3359695', E_USER_DEPRECATED);
+      $supported = (array) $this->supportedInterfaceOrClass;
+    }
+    else {
+      $supported = array_keys($this->getSupportedTypes($format));
+    }
 
     return (bool) array_filter($supported, function ($name) use ($data) {
       return $data instanceof $name;
@@ -57,7 +56,13 @@ public function supportsDenormalization($data, string $type, string $format = NU
       return FALSE;
     }
 
-    $supported = (array) $this->supportedInterfaceOrClass;
+    if (property_exists($this, 'supportedInterfaceOrClass')) {
+      @trigger_error('Defining ' . static::class . '::supportedInterfaceOrClass property is deprecated in drupal:10.2.0 and is removed from drupal:11.0.0. Use getSupportedTypes() instead. See https://www.drupal.org/node/3359695', E_USER_DEPRECATED);
+      $supported = (array) $this->supportedInterfaceOrClass;
+    }
+    else {
+      $supported = array_keys($this->getSupportedTypes($format));
+    }
 
     $subclass_check = function ($name) use ($type) {
       return (class_exists($name) || interface_exists($name)) && is_subclass_of($type, $name, TRUE);
diff --git a/core/modules/serialization/src/Normalizer/NullNormalizer.php b/core/modules/serialization/src/Normalizer/NullNormalizer.php
index 2479711b4bb8fe5eaf96def27d6e37b3be5cb859..63d7c24e728398221d954dbaf96fe4fb57c56d47 100644
--- a/core/modules/serialization/src/Normalizer/NullNormalizer.php
+++ b/core/modules/serialization/src/Normalizer/NullNormalizer.php
@@ -7,6 +7,13 @@
  */
 class NullNormalizer extends NormalizerBase {
 
+  /**
+   * The interface or class that this Normalizer supports.
+   *
+   * @var string[]
+   */
+  protected array $supportedTypes = ['*' => FALSE];
+
   /**
    * Constructs a NullNormalizer object.
    *
@@ -14,7 +21,7 @@ class NullNormalizer extends NormalizerBase {
    *   The supported interface(s) or class(es).
    */
   public function __construct($supported_interface_of_class) {
-    $this->supportedInterfaceOrClass = $supported_interface_of_class;
+    $this->supportedTypes = [$supported_interface_of_class => TRUE];
   }
 
   /**
@@ -24,4 +31,11 @@ public function normalize($object, $format = NULL, array $context = []): array|s
     return NULL;
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function getSupportedTypes(?string $format): array {
+    return $this->supportedTypes;
+  }
+
 }
diff --git a/core/modules/serialization/src/Normalizer/PrimitiveDataNormalizer.php b/core/modules/serialization/src/Normalizer/PrimitiveDataNormalizer.php
index 78ec3e187559bb3d13898f509eea0ac50cf4e3bf..785104ef1404a928f8080398a72ac254a298b787 100644
--- a/core/modules/serialization/src/Normalizer/PrimitiveDataNormalizer.php
+++ b/core/modules/serialization/src/Normalizer/PrimitiveDataNormalizer.php
@@ -12,11 +12,6 @@ class PrimitiveDataNormalizer extends NormalizerBase {
 
   use SerializedColumnNormalizerTrait;
 
-  /**
-   * {@inheritdoc}
-   */
-  protected $supportedInterfaceOrClass = PrimitiveInterface::class;
-
   /**
    * {@inheritdoc}
    */
diff --git a/core/modules/serialization/src/Normalizer/TimestampItemNormalizer.php b/core/modules/serialization/src/Normalizer/TimestampItemNormalizer.php
index d0cda8ceec678c20c70f6175ca263df86d9be148..2cfdd63ee0254e7584695e70948042e5cfa3fe0e 100644
--- a/core/modules/serialization/src/Normalizer/TimestampItemNormalizer.php
+++ b/core/modules/serialization/src/Normalizer/TimestampItemNormalizer.php
@@ -16,11 +16,6 @@
  */
 class TimestampItemNormalizer extends FieldItemNormalizer {
 
-  /**
-   * {@inheritdoc}
-   */
-  protected $supportedInterfaceOrClass = TimestampItem::class;
-
   /**
    * {@inheritdoc}
    */
diff --git a/core/modules/serialization/src/Normalizer/TimestampNormalizer.php b/core/modules/serialization/src/Normalizer/TimestampNormalizer.php
index 77c95469f4916c6cbfd34d35521fe2ad91191ee9..abc9f2ba8079b68b149f6c34e1312f5f1318861e 100644
--- a/core/modules/serialization/src/Normalizer/TimestampNormalizer.php
+++ b/core/modules/serialization/src/Normalizer/TimestampNormalizer.php
@@ -24,11 +24,6 @@ class TimestampNormalizer extends DateTimeNormalizer {
     'RFC 3339' => \DateTime::RFC3339,
   ];
 
-  /**
-   * {@inheritdoc}
-   */
-  protected $supportedInterfaceOrClass = Timestamp::class;
-
   /**
    * {@inheritdoc}
    */
diff --git a/core/modules/serialization/src/Normalizer/TypedDataNormalizer.php b/core/modules/serialization/src/Normalizer/TypedDataNormalizer.php
index 41ac788da7f560641f3c77ac2bf09fb40c6a14cc..f0572bb1bf3642e03ccf813e874e6fa0926a5c87 100644
--- a/core/modules/serialization/src/Normalizer/TypedDataNormalizer.php
+++ b/core/modules/serialization/src/Normalizer/TypedDataNormalizer.php
@@ -9,11 +9,6 @@
  */
 class TypedDataNormalizer extends NormalizerBase {
 
-  /**
-   * {@inheritdoc}
-   */
-  protected $supportedInterfaceOrClass = TypedDataInterface::class;
-
   /**
    * {@inheritdoc}
    */
diff --git a/core/modules/serialization/tests/modules/field_normalization_test/src/Normalization/TextItemSillyNormalizer.php b/core/modules/serialization/tests/modules/field_normalization_test/src/Normalization/TextItemSillyNormalizer.php
index 620693bd65725e295e2cf9e13005ecc7590844d1..855b70d753cdc693bd46df333f3d7d3a05d2eee1 100644
--- a/core/modules/serialization/tests/modules/field_normalization_test/src/Normalization/TextItemSillyNormalizer.php
+++ b/core/modules/serialization/tests/modules/field_normalization_test/src/Normalization/TextItemSillyNormalizer.php
@@ -10,11 +10,6 @@
  */
 class TextItemSillyNormalizer extends FieldItemNormalizer {
 
-  /**
-   * {@inheritdoc}
-   */
-  protected $supportedInterfaceOrClass = TextItemBase::class;
-
   /**
    * {@inheritdoc}
    */
@@ -33,4 +28,11 @@ protected function constructValue($data, $context) {
     return $value;
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function getSupportedTypes(?string $format): array {
+    return [TextItemBase::class => TRUE];
+  }
+
 }
diff --git a/core/modules/serialization/tests/modules/test_datatype_boolean_emoji_normalizer/src/Normalizer/BooleanNormalizer.php b/core/modules/serialization/tests/modules/test_datatype_boolean_emoji_normalizer/src/Normalizer/BooleanNormalizer.php
index 7b132e47a913f8cf4e9141a0d8f6a99a631340f6..7cbda9aef2aa208f71c70a74e81dbd1c5de4b2da 100644
--- a/core/modules/serialization/tests/modules/test_datatype_boolean_emoji_normalizer/src/Normalizer/BooleanNormalizer.php
+++ b/core/modules/serialization/tests/modules/test_datatype_boolean_emoji_normalizer/src/Normalizer/BooleanNormalizer.php
@@ -11,11 +11,6 @@
  */
 class BooleanNormalizer extends NormalizerBase implements DenormalizerInterface {
 
-  /**
-   * {@inheritdoc}
-   */
-  protected $supportedInterfaceOrClass = BooleanData::class;
-
   /**
    * {@inheritdoc}
    */
@@ -36,8 +31,8 @@ public function denormalize($data, $class, $format = NULL, array $context = []):
   /**
    * {@inheritdoc}
    */
-  public function hasCacheableSupportsMethod(): bool {
-    return TRUE;
+  public function getSupportedTypes(?string $format): array {
+    return [BooleanData::class => TRUE];
   }
 
 }
diff --git a/core/modules/serialization/tests/modules/test_fieldtype_boolean_emoji_normalizer/src/Normalizer/BooleanItemNormalizer.php b/core/modules/serialization/tests/modules/test_fieldtype_boolean_emoji_normalizer/src/Normalizer/BooleanItemNormalizer.php
index b06e062263bdf0e1880dbdd517fdc511afc2ab1f..067e7129a41adaede7f65add20e2cbe4de9dfa6f 100644
--- a/core/modules/serialization/tests/modules/test_fieldtype_boolean_emoji_normalizer/src/Normalizer/BooleanItemNormalizer.php
+++ b/core/modules/serialization/tests/modules/test_fieldtype_boolean_emoji_normalizer/src/Normalizer/BooleanItemNormalizer.php
@@ -11,11 +11,6 @@
  */
 class BooleanItemNormalizer extends FieldItemNormalizer implements DenormalizerInterface {
 
-  /**
-   * {@inheritdoc}
-   */
-  protected $supportedInterfaceOrClass = BooleanItem::class;
-
   /**
    * {@inheritdoc}
    */
@@ -43,4 +38,11 @@ protected function constructValue($data, $context) {
     return $data;
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function getSupportedTypes(?string $format): array {
+    return [BooleanItem::class => TRUE];
+  }
+
 }
diff --git a/core/modules/serialization/tests/src/Unit/Normalizer/NormalizerBaseTest.php b/core/modules/serialization/tests/src/Unit/Normalizer/NormalizerBaseTest.php
index 63b9bf714d333a79b5300d76336a023a0db9eeb6..0a568093ba5b9bf8c83307294dce6025779ea7dc 100644
--- a/core/modules/serialization/tests/src/Unit/Normalizer/NormalizerBaseTest.php
+++ b/core/modules/serialization/tests/src/Unit/Normalizer/NormalizerBaseTest.php
@@ -68,6 +68,13 @@ public function providerTestSupportsNormalization() {
  */
 abstract class TestNormalizerBase extends NormalizerBase {
 
+  /**
+   * The interface or class that this Normalizer supports.
+   *
+   * @var string[]
+   */
+  protected array $supportedTypes = ['*' => FALSE];
+
   /**
    * Sets the protected supportedInterfaceOrClass property.
    *
@@ -75,7 +82,14 @@ abstract class TestNormalizerBase extends NormalizerBase {
    *   The class name to set.
    */
   public function setSupportedInterfaceOrClass($supported_interface_or_class) {
-    $this->supportedInterfaceOrClass = $supported_interface_or_class;
+    $this->supportedTypes = [$supported_interface_or_class => FALSE];
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getSupportedTypes(?string $format): array {
+    return $this->supportedTypes;
   }
 
 }