当我们有 Class 类型的对象时,如何在 Java 中创建一个实例
How to create a instance in Java when we have object of type Class
我目前正在 Spring 引导应用程序中使用注释。我通过以下方式获得成功注释 class 的地方:
Class s = applicationContext.getType(beanName);
之后我还可以获得带注释的方法(带有一些 if 检查)
Method[] methods = s.getMethods();
我想调用一个特定的方法
Object result = method.invoke(?, args);
然而,invoke 的签名需要传递给它的 Class 的实例。我不确定如何获取 class?
的实例或对象
你并不真的想要一个 Class
实例:你要么想要调用该方法的实际实例(如果它是一个实例方法),要么 null
(如果这是一个静态方法)。
尚不完全清楚您打算做什么,但是如果 method
是一个实例方法,您需要一个 s
的实例来调用它。如果 s
有一个无参数的构造函数,那么你可以做
Object result = method.invoke(s.getConstructor().newInstance(), args);
对于具有其他签名的构造函数,将参数的类型提供给 getConstructor()
,将参数的值提供给 newInstance()
。
我目前正在 Spring 引导应用程序中使用注释。我通过以下方式获得成功注释 class 的地方:
Class s = applicationContext.getType(beanName);
之后我还可以获得带注释的方法(带有一些 if 检查)
Method[] methods = s.getMethods();
我想调用一个特定的方法
Object result = method.invoke(?, args);
然而,invoke 的签名需要传递给它的 Class 的实例。我不确定如何获取 class?
的实例或对象你并不真的想要一个 Class
实例:你要么想要调用该方法的实际实例(如果它是一个实例方法),要么 null
(如果这是一个静态方法)。
尚不完全清楚您打算做什么,但是如果 method
是一个实例方法,您需要一个 s
的实例来调用它。如果 s
有一个无参数的构造函数,那么你可以做
Object result = method.invoke(s.getConstructor().newInstance(), args);
对于具有其他签名的构造函数,将参数的类型提供给 getConstructor()
,将参数的值提供给 newInstance()
。