DefaultParameterizedType implements ParameterizedType { @Override public String toString() { return ReflectionUtils.serializeType(this); } DefaultParameterizedType(Type ownerType, Class<?> rawType, Type... actualTypeArguments);  DefaultParameterizedType(ParameterizedType type); @Override Type[] getActualTypeArguments(); @Override Type getOwnerType(); @Override Type getRawType(); @Override int hashCode(); @Override boolean equals(Object o); @Override String toString();  }
@Test void toStringTest() { DefaultParameterizedType type = new DefaultParameterizedType(null, Void.class); assertEquals("java.lang.Void", type.toString()); type = new DefaultParameterizedType(Collections.class, List.class); assertEquals("java.util.Collections.java.util.List", type.toString()); type = new DefaultParameterizedType(Collections.class, List.class, String.class); assertEquals("java.util.Collections.java.util.List<java.lang.String>", type.toString()); type = new DefaultParameterizedType(null, Map.class, Integer.class, String.class); assertEquals("java.util.Map<java.lang.Integer, java.lang.String>", type.toString()); type = new DefaultParameterizedType(null, Map.class, Integer.class, new DefaultParameterizedType(null, List.class, String.class)); assertEquals("java.util.Map<java.lang.Integer, java.util.List<java.lang.String>>", type.toString()); }