我是Java编程和测试新手,包含ArrayList中使用的方法。当我通过contains方法传递对象时,我重写了Object类的equals方法但是在执行此操作时我收到以下错误 不兼容的类型:无法将对象转换为checkHole
以下是我写的代码
import java.util.*;
class checkHole
{
public int a, b;
public checkHole (int a, int b)
{
this.a = a;
this.b = b;
}
public int getA()
{
return this.a;
}
public boolean equals(Object o)
{
if(o instanceof checkHole)
{
return ((checkHole)o).getA().equals(this.a);
}
else
return false;
}
public static void main(String args[])
{
ArrayList<checkHole> aList = new ArrayList<checkHole>();
aList.add(new checkHole(0,1));
aList.add(new checkHole(2,3));
aList.add(new checkHole(4,5));
checkHole h = new checkHole(0,1);
boolean x = aList.contains(h); // x = true if the objects are equal by value
System.out.println(x); // Should print true if the objects are equal
}
}
我一直在搜索上面的铸造问题,但是徒劳无功。几乎所有地方都使用equals方法。http://docs.oracle.com/javase/tutorial/java/IandI/objectclass.html)
我不知道为什么我无法将obj转换为checkHole类型。
答案 0 :(得分:0)
只需将.Equals()更改为==即可。当您使用原始类型(int,char,boolean)时,请使用==。使用对象引用(CheckHole,您创建的任何类)时,请使用.equals()。
if(o instanceof checkHole)
{
return ((checkHole)o).getA()==this.a;
}