サブ型は
JsonbTypeInfo
に強くバインドされています。
Type は、特定のエイリアスを処理するとき、または指定された型のインスタンスを処理するときに作成されるインスタンスのクラスを定義して、どのエイリアスを使用するかを決定します。
クラス名の代わりにエイリアスが使用されます。特定の
JsonbTypeInfo
にバインドされたすべての定義済みサブ型の中で一意の値である必要があります。エイリアスを処理および検証し、重複するエイリアスが見つかった場合は、例外をスローする必要があります。
// 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}