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通过反射获取带参数构造方法并使用的主要内容,如果未能解决你的问题,请参考以下文章