中易网

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

答案:2  悬赏:70  
解决时间 2021-01-16 20:34
java中在反射中怎么调用有参构造器
最佳答案
这里以用反射调用 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();
}
}
全部回答
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());  //打印出    张三
    }
    
}
追问:谢谢
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
深圳宝安男科在哪里,宝安宝体的昆仑怎么样,
adobe audition cs6 和 audition CC 有什么区
EXCEL中如何对某个数进行计算,如果这个数在
我没说薪水什么的,我就是不服气在虎门太平这
环青海湖自行车赛和环法自行车赛类似吗?
祭祀宅子文书上写哪些神仙
大度八开纸的标准尺寸是42.5*28还是42*28.5还
一天深夜怎么存档
家纺磨毛是啥意思
现在为什么没人愿意把Smartisan OS移植到别的
封包是什么意思
华为手机gem-703l开不了机是怎么会事
先问东西南北 再问几下的那游戏叫什么
红红今年4岁,妈妈今天年28岁,妈妈的年龄是红
孟子·告天下的原文
推荐资讯
88×125的简便计算。
平邮,快递,EMS有什么区别?为什么价格不一
懂就回答,不懂就别回答,作系统Win7(64位&#
我家有几十颗二十多年的杜仲树,能值多少钱?
8减1等于7,8减2等于6,8减3等于5,8减4等于4,
红色菊花可以泡茶喝吗?
莹博超市怎么去啊,我要去那办事
小信未孚,是什么意思
瑞丽市统计局地址在什么地方,想过去办事
寸心的释义
养儿不知娘辛苦,养女才报父母恩?
“摇”字开头的成语有哪些?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?