Java 在我实现的equals()中使用布尔对象equals()

Java 在我实现的equals()中使用布尔对象equals(),java,oop,Java,Oop,所以我正在用Java做一个junit测试 我应该测试两种具体的类型 public class BoolValue implements Value{ private boolean item; //the Constructor public BoolValue(boolean data){ item = data; } //checks to see if the current object is of the same type as

所以我正在用Java做一个junit测试

我应该测试两种具体的类型

public class BoolValue implements Value{
   private boolean item; 

   //the Constructor 
   public BoolValue(boolean data){
        item = data;
   }

   //checks to see if the current object is of the same type as the parameter  
   public boolean equals(Value v){
       boolean result = false;
          if (v instanceof BoolValue) {
              if(this == v)
                  result = true; 
          }
       return result; //true if equal 
   }

    // returns current state string 
    public String toString(){
         return " "+item;

    }
 }
这是我的测试文件中的测试用例

@Test
 public void testBoolean(){
     BoolValue value = new BoolValue(true); 
     BoolValue value2 = new BoolValue(true); 
     assertEquals(true, value.equals(value2));
 }
它返回false而不是预期的true

在equals方法中,我想比较两种布尔类型,但我不能使用java.object equals(),因为程序将其读取为类equals(),因此它是递归的。 如何调用java.object equals()来比较布尔类型。还有,我这样做对吗

 if (v instanceof BoolValue) {
       if(this == v)
           result = true; 
 }
如果需要
新布尔值(true).等于(新布尔值(true))
,则不能使用
==
。您需要比较其中的两个

此外,您需要接受
Object
以获得“适当的”
equals
方法

@Override
public boolean equals(Object v){
   return (v instanceof BoolValue && ((BoolValue)v).item == this.item);
}
当您重写
equals
时,还需要重写
hashCode

@Override
public int hashCode(){ return item ? 0 : 1; }
最后(除非您打算使这些“值”可变),因为只有两个可能的值,所以您应该将构造函数设置为私有,并将这两个值作为静态字段提供(您也可以使用
枚举

如果需要
新布尔值(true).等于(新布尔值(true))
,则不能使用
==
。您需要比较其中的两个

此外,您需要接受
Object
以获得“适当的”
equals
方法

@Override
public boolean equals(Object v){
   return (v instanceof BoolValue && ((BoolValue)v).item == this.item);
}
当您重写
equals
时,还需要重写
hashCode

@Override
public int hashCode(){ return item ? 0 : 1; }
最后(除非您打算使这些“值”可变),因为只有两个可能的值,所以您应该将构造函数设置为私有,并将这两个值作为静态字段提供(您也可以使用
枚举


@Override
添加到您的
equals()
方法中,以验证您是否正确重写了它。我认为您打算比较两个
BoolValue
对象的
值。由于它们属于
boolean
类型,属于基本类型(非对象),因此不能使用
object.equals
。将
@Override
添加到
equals()中
方法来验证您是否正确覆盖了它。我认为您打算比较两个
布尔值
对象的
值。由于它们属于
布尔型
,属于基本类型(非对象),因此不能使用
对象.equals
。如果
布尔值
是可变的,则两个实例是不够的(我知道问题中的类是不可变的,但是添加setter很容易,可能只是为了一个简单的例子而被忽略了)。如果
BoolValue
是可变的,那么两个实例是不够的(我知道问题中的类是不可变的,但是添加setter很容易,可能只是为了一个简单的示例而忽略了它)。