HAM*_*MID 71 html java reflection constructor
我想Class使用接受单个String参数的构造函数从其对象实例化一个对象.
这是一些接近我想要的代码:
Object object = null;
Class classDefinition = Class.forName("javax.swing.JLabel");
object = classDefinition.newInstance();
Run Code Online (Sandbox Code Playgroud)
但是,它实例化JLabel没有文本的对象.我想使用JLabel接受字符串作为初始文本的构造函数.有没有办法从Class对象中选择特定的构造函数?
mwi*_*ock 112
Class.newInstance调用no-arg构造函数(不带任何参数的构造函数).要调用不同的构造函数,需要使用反射包(java.lang.reflect).
获取这样的Constructor实例:
Class<?> cl = Class.forName("javax.swing.JLabel");
Constructor<?> cons = cl.getConstructor(String.class);
Run Code Online (Sandbox Code Playgroud)
调用getConstructor指定您需要采用单个String参数的构造函数.现在创建一个实例:
Object o = cons.newInstance("JLabel");
Run Code Online (Sandbox Code Playgroud)
而且你已经完成了.
PS只使用反射作为最后的手段!
Jot*_*thi 13
以下内容适合您.试试这个,
Class[] type = { String.class };
Class classDefinition = Class.forName("javax.swing.JLabel");
Constructor cons = classDefinition .getConstructor(type);
Object[] obj = { "JLabel"};
return cons.newInstance(obj);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
75828 次 |
| 最近记录: |