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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. package com.ccsu.reflection;

  2. import java.io.FileInputStream;
  3. import java.io.IOException;
  4. import java.util.Collection;
  5. import java.util.Properties;
  6. public class Demo8 {

  7.         /**
  8.          * @param args
  9.          * @throws IOException
  10.          * @throws ClassNotFoundException
  11.          * @throws IllegalAccessException
  12.          * @throws InstantiationException
  13.          */
  14.         public static void main(String[] args) throws IOException, InstantiationException, IllegalAccessException, ClassNotFoundException {
  15. //hashCode方法的作用,对对象进行计算,当修改对象后hashcode会改变,再去操作会内存泄露
  16.         //小框架书写
  17.                 FileInputStream fis = new FileInputStream("test.properties");
  18.                 Properties p = new Properties();
  19.                 p.load(fis);
  20.                 fis.close();
  21.                 String className = p.getProperty("className");
  22.                 System.out.println(className);
  23.                 Collection c = (Collection)Class.forName(className).newInstance();
  24.                 PersonDemo p1 = new PersonDemo("小叶",20);
  25.                 PersonDemo p2 = new PersonDemo("小李",25);
  26.                 PersonDemo p3 = new PersonDemo("小王",24);
  27.                 PersonDemo p4 = new PersonDemo("小叶",20);
  28.                 PersonDemo p5 = new PersonDemo("小叶",20);
  29.                 c.add(p4);
  30.                 c.add(p3);
  31.                 c.add(p2);
  32.                 c.add(p1);
  33.                 c.add(p5);
  34.                 System.out.println(c.size());
  35.         }

  36. }
  37. class PersonDemo
  38. {
  39.         public PersonDemo(String name, int age) {
  40.                 super();
  41.                 this.name = name;
  42.                 this.age = age;
  43.         }
  44.         @Override
  45.         public boolean equals(Object obj)
  46.         {
  47.                 if(!(obj instanceof Person))
  48.                         return false;
  49.                 PersonDemo p = (PersonDemo)obj;
  50.                         if(this.name == p.name && this.age == p.age)
  51.                         {
  52.                                 return true;
  53.                         }
  54.                         else
  55.                                 return false;
  56.         }
  57.         public int hashCode() {
  58.                
  59.                 return name.hashCode();
  60.         }
  61.         @Override
  62.         public String toString() {
  63.                 return "Person [name=" + name + ", age=" + age + "]";
  64.         }
  65.         private String name;
  66.         private int age;
  67.        
  68.         public String getName() {
  69.                 return name;
  70.         }
  71.         public void setName(String name) {
  72.                 this.name = name;
  73.         }
  74.         public int getAge() {
  75.                 return age;
  76.         }
  77.         public void setAge(int age) {
  78.                 this.age = age;
  79.         }
  80. }
复制代码
其中我的配置文件得到的是,HashSet,我的PersonDemo这个类中也写了hashcode和equal函数,为什麽得到的相同对象还是可以存到hashSet中呢??

1 个回复

倒序浏览
额,还没学到反射
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马