Annotation Interface JsonbSubtype


@JsonbAnnotation @Retention(RUNTIME) @Target({}) public @interface JsonbSubtype
Subtype is tightly bound to the JsonbTypeInfo.
Type defines class which instance will be created when processing specific alias, or when processing instance of the specified type, to determine which alias should be used.
Alias is used instead of a class name. It has to be unique value among all the defined subtypes bound to the specific JsonbTypeInfo. An exception should be thrown when processing and validating aliases and duplicate alias is found.

 // Example
 @JsonbTypeInfo({
      @JsonbSubtype(alias = "dog", type = Dog.class)
      @JsonbSubtype(alias = "cat", type = Cat.class)
 })
 interface Animal {}

 class Dog implements Animal {
     public String isDog = true;
 }
 class Cat implements Animal {
     public String isCat = true;
 }
 class Rat implements Animal {
     public String isRat = true;
 }

 jsonb.toJson(new Dog());// {"@type":"dog","isDog":true}
 jsonb.toJson(new Cat());// {"@type":"cat","isCat":true}
 jsonb.toJson(new Rat());// {"isRat":true}
 
  • Required Element Summary

    Required Elements
    Modifier and Type
    Required Element
    Description
    Type alias which is used instead of a class name.
    An actual type bound to the alias.
  • Element Details

    • alias

      String alias
      Type alias which is used instead of a class name.
      Returns:
      alias value
    • type

      Class<?> type
      An actual type bound to the alias.
      Returns:
      alias bound type