我需要为MyClas制作等于函数。
public class MyClass
{
boolean equals(Object value)
{
if (... value is type of MyCLass ...)
{
return= ... check conditions...;
} else return false;
}
}
为此,我需要知道Object的值是否是MyClass的类型。如何制作?
答案 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
需要在编译时知道引用类型。