码迷,mamicode.com
首页 > 其他好文 > 详细

获取构造器并使用构造器创建对象

时间:2016-10-03 19:35:19      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:

package Reflect;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;

class Student
{
int age;
String name;

public Student()
{
System.out.println("调用无参构造器创建对象");
}
public Student(int age,String name)
{
this.age=age;
this.name=name;
System.out.println("调用有参构造器创建对象");
}
@Override
public String toString() {
return "Student [age=" + age + ", name=" + name + "]";
}


}
public class ConstructorInvoke {
public static void main(String[] args) throws NoSuchMethodException, SecurityException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
//传统方式创建对象
//Student stu=new Student(18,"小明");

//利用反射创建对象
//1 先找到被调用构造器的字节码对象
Class<Student> clazz=Student.class;
//2 找到构造器
Constructor<Student> cons=clazz.getConstructor(int.class,String.class);
System.out.println(cons);
//3 调用构造器创建对象
Student stu= cons.newInstance(18,"李三");
System.out.println(stu);


}

}

调用私有构造器 调用带有前缀的declare方法  出现 Class Reflect.ConstructorInvoke can not access a member of class Reflect.Student with modifiers "private"

所以我们还要将这个构造器设置为可访问的.

 

获取构造器并使用构造器创建对象

标签:

原文地址:http://www.cnblogs.com/HJL085/p/5929467.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!