黑马程序员技术交流社区
标题:
反射怎么和具体的类对象联系起来
[打印本页]
作者:
328078121
时间:
2013-8-30 23:28
标题:
反射怎么和具体的类对象联系起来
本帖最后由 328078121 于 2013-8-31 19:27 编辑
public class ReflectTest2 {
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
InputStream ips = new FileInputStream("config.properties");
//将配置文件读取到流中
Properties props = new Properties();
props.load(ips);//将流中的配置文件加载进来
ips.close();
String className = props.getProperty("className");
Collection collections =
(Collection) Class.forName(className).newInstance();
//这里是怎么和ReflectPoint类的对象联系起来的?
ReflectPoint rpt1 = new ReflectPoint(4,5);
ReflectPoint rpt2 = new ReflectPoint(7,2);
ReflectPoint rpt3 = new ReflectPoint(4,5);
collections.add(rpt1);
collections.add(rpt2);
collections.add(rpt3);
collections.add(rpt1);
System.out.println(collections.size());
}
}
作者:
老衲玩IT
时间:
2013-8-31 00:06
这是用反射的方法建立Collection对象,Collection是java已定义的集合类,集合类可以添加任何类对象作为元素,ReflectPoint对象也不例外,Collection对象添加pt1 pt2...作为元素并没有什么可争议的地方,楼主提的问题不科学。
作者:
★忙碌★
时间:
2013-8-31 08:06
Collection collections = (Collection) Class.forName(className).newInstance();
这句话是获取collections的实例,接着就可用它的add方法了,add可以添加任何类型的元素!
作者:
xiangzi2008006
时间:
2013-8-31 09:55
Collection collections = (Collection) Class.forName(className).newInstance();不是已经定义了一个代理类了吗?这个代理类其实代理的就是Collection接口的所有方法,通过代理类能够调用代理接口的所有方法。于是执行add方法添加ReflectPoint对象。
如果invoke抽象方法的实现没有做任何处理,你得到的返回结果只能是null,以及无法保存添加到代理类中的对象而已。
作者:
薛鹏鹏
时间:
2013-8-31 14:17
如果您的问题已经解决
请更改分类未解决为已解决
保持队形,谢谢合作
详情参考
如何修改分类
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2