Java通过反射获取带参数构造方法并使用

Posted 张章章Sam

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java通过反射获取带参数构造方法并使用相关的知识,希望对你有一定的参考价值。

package com.sanmao10;
import java.lang.reflect.Constructor;
public class test2 
    /**
     * ###27.05_反射(通过反射获取带参构造方法并使用)
     * Constructor
     * Class类的newInstance()方法是使用该类无参的构造函数创建对象, 如果一个类没有无参的构造函数,
     * 就不能这样创建了,可以调用Class类的getConstructor(String.class,int.class)
     * 方法获取一个指定的构造函数然后再调用Constructor类的newInstance("张三",20)方法创建对象*/
    public static void main(String[] args) throws Exception
        Class clazz=Class.forName("com.sanmao10.Person");
//        Person p=(Person)clazz.newInstance();    //通过无参构造创建对象
//        p.say();
        Constructor c=clazz.getConstructor(String.class,int.class);//获取有参构造
        Person p=(Person) c.newInstance("sanmao",12);    //通过有参构造创建对象
        p.say();
    




package com.sanmao10;
public class Person 
    private String name;
    private int age;

//    public Person() 
//    

    public Person(String name, int age) 
        this.name = name;
        this.age = age;
    

    public void setName(String name) 
        this.name = name;
    

    public void setAge(int age) 
        this.age = age;
    

    public String getName() 
        return name;
    

    public int getAge() 
        return age;
    

    @Override
    public boolean equals(Object o) 
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        Person person = (Person) o;

        if (age != person.age) return false;
        return name != null ? name.equals(person.name) : person.name == null;

    

    @Override
    public int hashCode() 
        int result = name != null ? name.hashCode() : 0;
        result = 31 * result + age;
        return result;
    

    @Override
    public String toString() 
        return super.toString();
    
    public void say()
        System.out.println(name+"..."+age);
    
    public void papapa()
        System.out.println(name+"   pa pa pa");
    

以上是关于Java通过反射获取带参数构造方法并使用的主要内容,如果未能解决你的问题,请参考以下文章

Java反射创建带构造参数的类 并执行方法

java 27 - 3 反射之 通过反射获取构造方法并使用

JAVA反射中通过Class.forname()如何带参数的方法怎么赋值和调用呀?

00111_通过反射获取构造方法并使用

java 反射 如何得到构造函数的参数列表

第十四章 类型信息1(java的反射)