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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 奋发吧小白 高级黑马   /  2014-10-10 10:44  /  896 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

需求:
通过反射的方式读取配置文件中配置的集合,然后根据配置文件中所配置的集合来输出集合中的元素个数
  1. package test;
  2. import java.util.*;
  3. import java.io.*;
  4. public class Test01
  5. {
  6.         public static void main(String[] args) throws Exception
  7.         {
  8.                  //创建一个读取配置文件的输入流
  9.                 InputStream ips = new FileInputStream("config.properties");
  10.                 //创建一个Properties对象和输入流关联,把配置文件的内容读取到集合中
  11.                 Properties props = new Properties();
  12.                 props.load(ips);
  13.                 ips.close();
  14.                 //得到键值
  15.                 String className = props.getProperty("className");
  16.                 //通过反射的方式创建集合
  17.                 Collection con = (Collection) Class.forName(className).newInstance();
  18.                 //Collection con = new ArrayList();
  19.                  ClassDemo cd1 = new ClassDemo(9,8);
  20.                  ClassDemo cd2 = new ClassDemo(1,8);
  21.                  ClassDemo cd3 = new ClassDemo(9,8);
  22.                  con.add(cd1);
  23.                  con.add(cd2);
  24.                  con.add(cd3);
  25.                  con.add(cd1);
  26.                  System.out.println(con.size());
  27.                  
  28.                  
  29.         }
  30. }
  31. class ClassDemo
  32. {
  33.         private int x;
  34.         private int y;
  35.         public ClassDemo(int x, int y) {
  36.                 super();
  37.                 this.x = x;
  38.                 this.y = y;
  39.         }
  40.         public int getX() {
  41.                 return x;
  42.         }
  43.         public void setX(int x) {
  44.                 this.x = x;
  45.         }
  46.         public int getY() {
  47.                 return y;
  48.         }
  49.         public void setY(int y) {
  50.                 this.y = y;
  51.         }
  52.         @Override
  53.         public int hashCode() {
  54.                 final int prime = 31;
  55.                 int result = 1;
  56.                 result = prime * result + x;
  57.                 result = prime * result + y;
  58.                 return result;
  59.         }
  60.         @Override
  61.         public boolean equals(Object obj) {
  62.                 if (this == obj)
  63.                         return true;
  64.                 if (obj == null)
  65.                         return false;
  66.                 if (getClass() != obj.getClass())
  67.                         return false;
  68.                 final ClassDemo other = (ClassDemo) obj;
  69.                 if (x != other.x)
  70.                         return false;
  71.                 if (y != other.y)
  72.                         return false;
  73.                 return true;
  74.         }
  75.        
  76. }
复制代码
当配置文件为:
className = java.util.ArrayList
时,输出结果为4
当配置文件为:
className = java.util.HashSet
时,输出结果为2


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马