/** * Creates new instance of given class with given optional arguments. */ @SuppressWarnings("unchecked") public static <T> T newInstance(final Class<T> clazz, final Object... params) throws InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException { if (params.length == 0) { return newInstance(clazz); } final Class<?>[] paramTypes = getClasses(params); final Constructor<?> constructor = findConstructor(clazz, paramTypes); if (constructor == null) { throw new InstantiationException("No constructor matched parameter types."); } return (T) constructor.newInstance(params); }
@Test void emptyArgument() { final Class[] actual = ClassUtil.getClasses(new Object[0]); // asserts assertNotNull(actual); assertEquals(0, actual.length); }
@Test void onlyNullValuesIncluded() { final Class[] actual = ClassUtil.getClasses(null, null, null, null); // asserts assertNotNull(actual); assertEquals(4, actual.length); }
@Test void noNullValueIncluded() { final Class[] actual = ClassUtil.getClasses(new Object(), new Base32(), File.class, 3, 23L, 44.55F, 11.11D); // asserts assertNotNull(actual); assertEquals(7, actual.length); assertEquals(Object.class, actual[0]); assertEquals(Base32.class, actual[1]); assertEquals(Class.class, actual[2]); assertEquals(Integer.class, actual[3]); assertEquals(Long.class, actual[4]); assertEquals(Float.class, actual[5]); assertEquals(Double.class, actual[6]); }
/** * Creates new instance of given class with given optional arguments. */ @SuppressWarnings("unchecked") public static <T> T newInstance(final Class<T> clazz, final Object... params) throws InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException { if (params.length == 0) { return newInstance(clazz); } final Class<?>[] paramTypes = getClasses(params); final Constructor<?> constructor = findConstructor(clazz, paramTypes); if (constructor == null) { throw new InstantiationException("No constructor matched parameter types."); } return (T) constructor.newInstance(params); }