得到错误"不兼容的类型"

时间:2014-06-29 10:54:17

标签: java

我是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类型。

1 个答案:

答案 0 :(得分:0)

只需将.Equals()更改为==即可。当您使用原始类型(int,char,boolean)时,请使用==。使用对象引用(CheckHole,您创建的任何类)时,请使用.equals()。

if(o instanceof checkHole)
{
    return ((checkHole)o).getA()==this.a;
}