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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 mohuancaizi 于 2014-3-2 16:28 编辑
  1. package cn.itcast.day1;


  2. import java.io.*;

  3. import java.io.FileInputStream;
  4. import java.io.InputStream;
  5. import java.util.Collection;
  6. import java.util.Properties;
  7. import java.util.*;
  8. public class RefectTest2 {

  9.         /**
  10.          * @param args
  11.          */
  12.         /**
  13.          * @param args
  14.          * @throws Exception
  15.          */
  16.         public static void main(String[] args)throws Exception {
  17.                 // TODO Auto-generated method stub
  18.                
  19.                 InputStream ips = new FileInputStream("config.properties");//创建一个文件 命名为:config.properties
  20.                 Properties props = new Properties();
  21.                 props.load(ips);
  22.                 ips.close();
  23.                 String className = props.getProperty("className");
  24.                 Collection collections = (Collection)Class.forName(className).newInstance();//
  25.                
  26.                
  27.                 //Collection collections = new ArrayList();//打印结果为4
  28.                 //Collection collections = new HashSet();//打印结果为3
  29.                 ReflectPoint pt1 = new ReflectPoint(3,3);
  30.                 ReflectPoint pt2 = new ReflectPoint(5,5);
  31.                 ReflectPoint pt3 = new ReflectPoint(3,3);
  32.                
  33.                
  34.                 collections.add(pt1);
  35.                 collections.add(pt2);
  36.                 collections.add(pt3);
  37.                 collections.add(pt1);
  38.                
  39.                 //面试可以用来举出一个 内存泄漏的例子
  40.                 //pt1.y =7;//已经改  哈希值已换
  41.                 //collections.remove(pt1);//pt1中原来的哈希值已换  所以删除不了
  42.                 System.out.println(collections.size());
  43.         }

  44. }
复制代码




谁能说说这句话里面代表的意思呢 Collection collections = (Collection)Class.forName(className).newInstance();  ????????????????

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

6 个回复

倒序浏览
通过className字符串得到一个Class字节码文件并通过这个字节码文件创建一个对象
将对象转制转换成Collection并赋值给collections变量。
回复 使用道具 举报
都用到反射了这句话会不懂吗
回复 使用道具 举报
一年_Hei 来自手机 中级黑马 2014-3-2 16:26:36
板凳
通过Class类的forName()静态方法获得配置文件中写好的类名的字节码对象。然后创建实例。你这里传进来的类必须是实现Collection接口的类
回复 使用道具 举报
e.c 发表于 2014-3-2 15:23
通过className字符串得到一个Class字节码文件并通过这个字节码文件创建一个对象
将对象转制转换成Collectio ...

被你这样一说 思路马上清晰了 thanks
回复 使用道具 举报
ixiangfeng 发表于 2014-3-2 15:37
都用到反射了这句话会不懂吗

现在懂啦{:2_30:}
回复 使用道具 举报

貌似刚讲反射的应该都是学这个的吧 三种方法之一
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马