是MyClass的Object实例

时间:2013-08-29 12:46:33

标签: java class equals instanceof

我需要为MyClas制作等于函数。

public class MyClass
{
boolean equals(Object value)
  {
    if (... value is type of MyCLass ...)
      {
        return= ... check conditions...;
      } else return false;
  }
}

为此,我需要知道Object的值是否是MyClass的类型。如何制作?

7 个答案:

答案 0 :(得分:5)

要检查value类型MyClass是否使用:

 if( value instanceof MyClass) 

答案 1 :(得分:1)

instanceof运算符用于确定。它是中缀,所以就这样使用它......

(value instanceof MyClass)

答案 2 :(得分:1)

    public class MyClass
    {
       boolean equals(Object value)
      {
           if (value instanceof  MyCLass)
           {
              return= ... check conditions...;
           } else return false;
       }
   }

答案 3 :(得分:1)

你可以做到

@Override
public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;

    MyClass myClass = (MyClass) o;
    //Your logic

您也可以使用instanceof代替getClass()方法。

答案 4 :(得分:1)

只是一个IDE技巧。只是为了节省一些时间。

在eclipse中你可以通过右键单击类文件并选择source --->生成hashCode()和equals()方法,选择你需要比较的所有属性,IDE将为你生成相应的代码

摘录

public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Employee other = (Employee) obj;
        if (firstName == null) {
            if (other.firstName != null)
                return false;
        } else if (!firstName.equals(other.firstName))
            return false;
        if (id != other.id)
            return false;
        if (lastName == null) {
            if (other.lastName != null)
                return false;
        } else if (!lastName.equals(other.lastName))
            return false;
        if (salary != other.salary)
            return false;
        return true;
    }

答案 5 :(得分:0)

value instanceof ClassName

instanceof关键字检查,其中value是ClassName的subclass,如果是,则reutns为true,否则返回false

答案 6 :(得分:0)

Altough RTTI(实时类型识别)被某些人视为代码嗅觉,有两种选择,一种是使用instanceof运算符:

if(value instanceof MyClass)

另一方面,您可以使用Class类中的完全成熟方法,给定两个对象,您可以确定它们是否属于同一层次结构(比instanceof IMO强大得多):

if(value.getClass().isAsignableFrom(getClass()))

第二种方法确定在给定任何类型的对象的情况下,value是否是执行时当前类(this)的相同类或超类/超接口。这是isAsignableFrom擅长的地方,因为instanceof需要在编译时知道引用类型。