因为equals()方法确省等同于==,比较的是两个reference指向的是否是同一个对象.在java的大部分类中,已对这个方法做了重载,改为比较两个reference指向对象所包含的内容是否相同.你的代码中Value类没有对equals()做重载,所以它还是确省地比较v1和v2是否指向同一个对象,所以为false.你所要做的就是,重载equals(),让它比较两个实例的i是否相同.

解决方案 »

  1.   

    Integer的构造函数
    public final class Integer extends Number implements Comparable {
        private int value;
        public Integer(int value) {
    this.value = value;
        }
        public boolean equals(Object obj) {
    if (obj instanceof Integer) {
        return value == ((Integer)obj).intValue();
    }
    return false;
        }
        
    }class Value{
      ...
    }
    扩展的是Object,让我们看一下Object中的equals方法
        public boolean equals(Object obj) {
    return (this == obj);
        }
    显然,Integer比较的是int值,而Value比较的是对象是否指向同一个obj。
    ================================================================CSDN 论坛助手 Ver 1.0 B0402提供下载。 改进了很多,功能完备!★  浏览帖子速度极快![建议系统使用ie5.5以上]。 ★  多种帖子实现界面。 
    ★  保存帖子到本地[html格式]★  监视您关注帖子的回复更新。
    ★  可以直接发贴、回复帖子★  采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录! 
    ★  支持在线检测程序升级情况,可及时获得程序更新的信息。★★ 签名  ●  
         可以在您的每个帖子的后面自动加上一个自己设计的签名哟。Http://www.ChinaOK.net/csdn/csdn.zip
    Http://www.ChinaOK.net/csdn/csdn.rar
    Http://www.ChinaOK.net/csdn/csdn.exe    [自解压]
      

  2.   

    Kick_hotdog(khd) 的说明已经完全说明了这个问题了,因此楼主要做的就是
    重载equals()函数。
    重载方法则类似Kick_hotdog(khd)的equals()方法。
      

  3.   

    一般==是比较两个对象是否指向同一对象,而equals是比较两个对象的值是否相等。----------------------------
    注意:此人因发表爱国言论,被斑竹hexiao*扣除6分信誉分?!我爱发表意见,如有错误请指教~