{
ObjectMapper mapper = new ObjectMapper();
mapper.registerSubtypes(SubB.class);
mapper.registerSubtypes(new NamedType(SubD.class, "TypeD"));
SuperType bean = mapper.readValue("{\"@type\":\"TypeB\", \"b\":13}", SuperType.class);
assertSame(SubB.class, bean.getClass());
assertEquals(13, ((SubB) bean).b);
// but we can also explicitly register name too
bean = mapper.readValue("{\"@type\":\"TypeD\", \"d\":-4}", SuperType.class);