java中在反射中怎么调用有参构造器

 我来答
爱我所爱丶Lyb
2015-07-28 · TA获得超过408个赞
知道小有建树答主
回答量:390
采纳率:0%
帮助的人:308万
展开全部
Class cls = Class.forName("类名");
Class[] paramTypes = { String.class, String.class, String.class,String.class };//参数
Object[] params = {参数1, 参数2, 参数3, 参数4}; // 方法传入的参数   
Constructor con = cls.getConstructor(paramTypes);     //根据参数调用构造器
Entity base = (Entity ) con.newInstance(params);  //Entity 为自定义类
更多追问追答
追问
我还是不懂,能用一个student类说明一下吗?
追答
import java.lang.reflect.Constructor;


public class Student {
    public String name; //名字
    public Integer age; //年龄
    public Student(String name, Integer age) {
        super();
        this.name = name;
        this.age = age;
    }
    public String getName(){
        return this.name;
    }
    
    public static void main(String[] args) throws Exception {
        Class clazz = Class.forName("Student");
        Class[] paramTypes = { String.class, Integer.class };//参数
        Constructor con = clazz.getConstructor(paramTypes);     //根据参数调用构造器
        Object[] params = {"张三",15}; // 方法传入的参数   
        Student student = (Student) con.newInstance(params); //根据已经传参数进去的构造器创建Student
        System.out.println(student.getName());  //打印出    张三
    }
    
}
wal891644803
推荐于2018-03-22 · 超过10用户采纳过TA的回答
知道答主
回答量:64
采纳率:100%
帮助的人:22万
展开全部
这里以用反射调用 public String(StringBuilder builder)这个构造方法为例子说明,代码如下:
public static void main(String[] args) {
// TODO Auto-generated method stub
String str = "hello";
// 1首先获取String类的类类型
Class c = str.getClass();
try {
// 2然后获取构造方法和参数,这里用参数就可以指定调用的是哪个构造方法了
Constructor constructor = c.getConstructor(StringBuilder.class);

String result = (String) constructor.newInstance(new StringBuilder("abcd"));
System.out.println("result: " + result);
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式