问题
I am looking for a Java library that provides a function like this, invokeConstructor. (don't want to import clojure.lang)
回答1:
apache commons-beanutils:
Object args[] = ...;
Class<?> argTypes[] = ...;
Object obj = ConstructorUtils.invokeConstructor(clazz, args, argTypes);
Object obj = ConstructorUtils.invokeExactConstructor(clazz, args, argTypes);
The big difference between "invokeConstructor" and "invokeExactConstructor" is that the former will find a type assignment compatible constuctor, while the latter will match only the exact argument types you've supplied. (see java.lang.Class.isAssignableFrom)
来源:https://stackoverflow.com/questions/11488861/java-reflection-library-that-has-a-function-to-create-newinstance-for-any-class