/** * Special case of {@link #convertType(Object, Class)} when target is collection and * when component type is known. */ @SuppressWarnings("unchecked") public <C extends Collection<T>, T> C convertToCollection(final Object value, final Class<? extends Collection> destinationType, final Class<T> componentType) { if (value == null) { return null; } // check same instances if (ClassUtil.isInstanceOf(value, destinationType)) { return (C) value; } final CollectionConverter collectionConverter; if (componentType == null) { collectionConverter = new CollectionConverter(destinationType, Object.class); } else { collectionConverter = new CollectionConverter(destinationType, componentType); } return (C) collectionConverter.convert(value); }
if (ClassUtil.isInstanceOf(value, destinationType)) { return (T) value;
@Test void testMatchClasses() { TFooBean a = new TFooBean(); TFooBean b = new TFooBean(); TFooBean2 c = new TFooBean2(); assertTrue(TFooBean.class.isInstance(a)); assertTrue(ClassUtil.isTypeOf(TFooBean.class, a.getClass())); assertTrue(ClassUtil.isTypeOf(TFooBean.class, b.getClass())); assertTrue(ClassUtil.isTypeOf(a.getClass(), b.getClass())); assertTrue(ClassUtil.isTypeOf(b.getClass(), a.getClass())); assertTrue(ClassUtil.isTypeOf(TFooBean2.class, c.getClass())); assertTrue(ClassUtil.isTypeOf(TFooBean2.class, TFooBean.class)); assertFalse(ClassUtil.isTypeOf(TFooBean.class, TFooBean2.class)); assertTrue(ClassUtil.isTypeOf(c.getClass(), TFooBean.class)); assertFalse(ClassUtil.isTypeOf(a.getClass(), TFooBean2.class)); assertTrue(ClassUtil.isTypeOf(TFooBean.class, Serializable.class)); assertTrue(Serializable.class.isInstance(c)); //noinspection ConstantConditions assertTrue(c instanceof Serializable); assertTrue(ClassUtil.isInstanceOf(c, Serializable.class)); assertTrue(ClassUtil.isTypeOf(TFooBean2.class, Serializable.class)); assertTrue(ClassUtil.isTypeOf(TFooBean2.class, Comparable.class)); assertFalse(ClassUtil.isTypeOf(TFooBean.class, Comparable.class)); assertTrue(ClassUtil.isTypeOf(TFooBean.class, TFooIndyEx.class)); assertTrue(ClassUtil.isTypeOf(TFooBean2.class, TFooIndyEx.class)); assertTrue(ClassUtil.isTypeOf(TFooBean.class, TFooIndy.class)); }
@Test void testMatchInterfaces() { assertTrue(ClassUtil.isTypeOf(HashMap.class, Map.class)); assertTrue(ClassUtil.isTypeOf(AbstractMap.class, Map.class)); assertTrue(ClassUtil.isTypeOf(Map.class, Map.class)); assertTrue(ClassUtil.isInstanceOf(new HashMap(), Map.class)); assertTrue(ClassUtil.isTypeOf(HashMap.class, Map.class)); assertTrue(ClassUtil.isTypeOf(AbstractMap.class, Map.class)); assertTrue(ClassUtil.isTypeOf(HashMap.class, Map.class)); assertTrue(ClassUtil.isTypeOf(Map.class, Map.class)); assertTrue(ClassUtil.isTypeOf(HashMap.class, Map.class)); assertTrue(ClassUtil.isTypeOf(AbstractMap.class, Map.class)); assertTrue(ClassUtil.isTypeOf(HashMap.class, Map.class)); assertTrue(ClassUtil.isTypeOf(Map.class, Map.class)); }
/** * Special case of {@link #convertType(Object, Class)} when target is collection and * when component type is known. */ @SuppressWarnings("unchecked") public <C extends Collection<T>, T> C convertToCollection(final Object value, final Class<? extends Collection> destinationType, final Class<T> componentType) { if (value == null) { return null; } // check same instances if (ClassUtil.isInstanceOf(value, destinationType)) { return (C) value; } final CollectionConverter collectionConverter; if (componentType == null) { collectionConverter = new CollectionConverter(destinationType, Object.class); } else { collectionConverter = new CollectionConverter(destinationType, componentType); } return (C) collectionConverter.convert(value); }
if (ClassUtil.isInstanceOf(value, destinationType)) { return (T) value;