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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 卢其龙 黑马帝   /  2012-1-8 18:22  /  3312 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一般是都获得类的构造函数,在实例化此类
Constructor con = A.class.getConstructor();
A a =(a)con.newInstance();

还有其他的思路吗?

5 个回复

倒序浏览
1、通过Class对象的newInstance()方法,这种方法的局限是只能取调用默认的构造函数
2、通过取得Class对象的getConstructor方法取得Construtor对象,然后再通过调用Constructor类的newInstance的方法
3、通过Array.newInstance方法来创建对象,但这种只适用于数组,数组也是一种对象

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
获取Class对象的三种方式:
                        a.通过类名获取 Class.forName(String)
                        b.直接获取 Xxxx.class
                        c.通过对象获取 对象.getClass()

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
有4种
方法一:new
方法二:使用工厂模式,引入工厂类
方法三:使用反射:Class.forName
方法四:对象克隆

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报

1 new语句(最常见)
2 反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()方法
3 调用对象的clone()方法
4 反序列化 调用java.io.ObjectInputStream对象的readObject()方法

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
一、反射来创建一个类的实例程序中不用new创建实例,
二、根据一编译期就不会确定对象的类型, 这样就实现了动态的绑定,
三、根据二增强了程序的扩展,如Class.forName("driver"),driver是通过配置文件配置的,当你要连接不同的数据库时,也许你就只要改一下配置文件就可以了,不用改动程序。对扩展开发,对修改关闭,著名的OPC原则。   

特别提醒,反射的效率很低,不到迫不得已不要用反射
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马