A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

如何用反射去创建一个对象,有2种方式,尽量用代码去体现

6 个回复

正序浏览
路过!!!!
回复 使用道具 举报
syusouki 发表于 2015-10-12 19:24
创建对象就一种方式啊,获取字节码有3种方式

创建对象就只有一种方式吗啊   这样题目会不会太简单了    只有通过获取字节码文件获取构造器来创建吗
回复 使用道具 举报
创建对象就一种方式啊,获取字节码有3种方式
回复 使用道具 举报
楼上是正确的
回复 使用道具 举报
使用暴力反射,因为理论上是不知道到底有没有私有化
首先是获取字节码文件:有三种方法
然后是获取构造器
接下来创建对象
回复 使用道具 举报
import java.lang.reflect.Constructor;
class Test
{
        public static void main(String[] args) throws Exception
        {       
                //第一种:获取字节码文件对象
                Class<?> c1 = Class.forName("Person");
                //获取构造器对象
                Constructor<?> con1 = c1.getConstructor(String.class,int.class);
                //创建对象
                con1.newInstance("张三",26);
                //第二种:获取字节码文件对象
                Class<Person> c2 = Person.class;
                //获取构造器对象
                Constructor<Person> con2 = c2.getConstructor(String.class,int.class);
                //创建对象
                con2.newInstance("李四",25);
        }
}
//用来测试反射的类
class Person
{
        private String name;
        private int age;
        public Person(){};
        public Person(String name,int age)
        {
                this.name = name;
                this.age = age;
                System.out.println(name+"****"+age);
        }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马