使用接受字符串参数的构造函数实例化类对象?

2022-08-31 11:16:12

我想使用接受单个参数的构造函数从其对象实例化对象。ClassString

下面是一些接近我想要的代码:

Object object = null;
Class classDefinition = Class.forName("javax.swing.JLabel");
object = classDefinition.newInstance();

但是,它会实例化不带文本的对象。我想使用接受字符串作为初始文本的构造函数。有没有办法从对象中选择特定的构造函数?JLabelJLabelClass


答案 1

Class.newInstance调用 no-arg 构造函数(不采用任何参数的构造函数)。为了调用不同的构造函数,您需要使用反射包 ()。java.lang.reflect

获取如下实例:Constructor

Class<?> cl = Class.forName("javax.swing.JLabel");
Constructor<?> cons = cl.getConstructor(String.class);

对 的调用指定您希望构造函数采用单个参数。现在创建一个实例:getConstructorString

Object o = cons.newInstance("JLabel");

大功告成。

附言:仅使用反射作为最后的手段!


答案 2

以下内容将为您服务。试试这个,

Class[] type = { String.class };
Class classDefinition = Class.forName("javax.swing.JLabel"); 
Constructor cons = classDefinition .getConstructor(type);
Object[] obj = { "JLabel"};
return cons.newInstance(obj);