您的位置:首页 > 编程语言 > Java开发

Java之反射--8.2.1反射创建类的对象

2017-04-06 00:00 190 查看
//反射创建类的对象
package com.aowin.newInstance;

import java.lang.reflect.Constructor;
import com.aowin.getclass.Student;

//创建的类中如果有空参数的构造方法
//1.获取创建的类的Class对象
//2.调用Class类中的newInstance()方法

//创建的类中没有空参数的构造方法,或者要使用有参数的构造方法
//1.获取创建的类的Class对象
//2.获取Class对象表示类中的构造方法,
//3.根据权限,取消访问权限检查,通过Constructor类中的setAccessible(true)方法
//4.调用Constructor类中的newInstance(参数)方法

public class Test {
public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, Exception, Exception {

//1.获取创建的类的Class对象
Class c = Class.forName("com.aowin.getclass.Student");

//2.
//如果Class对象表示的类中有空参数的构造方法,则可以使用Class类中的newInstance()方法
Object stu = c.newInstance();
System.out.println(stu);

//获取Class对象表示的类中的public修饰的构造方法,通过Class类中的getConstructor(参数)或getConstructors()
Constructor[] cons = c.getConstructors();
for(int i=0;i<cons.length;i++){
System.out.println(cons[i]);
}
//获取指定参数的构造方法
Constructor con = c.getConstructor(int.class); //获取int参数的构造方法,有多个参数用,隔开
//通过Constructor类中的newInstance(参数)来创建对象
Object obj2 = con.newInstance(17); //
System.out.println(obj2);
//获取Class对象表示类中所有的构造方法,通过Class类中的getDeclaredConstructors()方法
Constructor[] deCons = c.getDeclaredConstructors();
for(int i=0;i<deCons.length;i++){
System.out.println(deCons[i]);
}
//获取指定参数的所有权限的构造方法
Constructor deCon = c.getDeclaredConstructor(String.class,int.class);
//取消访问权限检查
deCon.setAccessible(true);
//通过Constructor类中的newInstance(参数)创建对象
Object obj3 = deCon.newInstance("张三",17);
System.out.println(obj3);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐