总结下判断某个实例是否属于某个类的方法相必大家都有所接触,但是他们之间的区别够清楚吗?下面我就总结下如何判断某个实例对象是否属于某个类的方法进行下总结
***** (好记性不如烂笔头) *****
instanceof运算符
InstanceOf运算符是用来在运行时指出对象是否是特定类的一个实例。InstanceOf通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。
用法也非常简单:
Boolean result = object instanceof class
参数 是否必选 描述
result 必选项 任意变量
object 必选项 任意对象表达
class 必选项 任意已定义的对象类
isInstance方法
public boolean isInstance(Object obj)
参数:
obj - 要检查的对象
判定指定的 Object 是否与此 Class 所表示的对象赋值兼容。此方法是 Java 语言
instanceof 运算符的动态等效方法。如果指定的 Object 参数非空,且能够在不引发
ClassCastException 的情况下被强制转换成该 Class 对象所表示的引用类型,则该方法返回 true;否则返回 false。
特别地,当该 Class 对象表示一个已声明的类时,若指定的 Object
参数是所表示类(或其任一子类)的一个实例,则此方法返回 true;否则返回 false。如果此 Class 对象表示一个数组类,且通过身份转换或扩展引用转换,指定的 Object
参数能转换为一个数组类的对象,则返回 true;否则返回 false。如果此
Class 对象表示一个接口,且指定 Object 参数的类或任一超类实现了此接口,则此方法返回 true;否则返回 false。如果此 Class 对象表示一个基本类型,则此方法返回 false。
instanceof关键字和isInstance()方法都是用于检查对象的类,都返回一个布尔值。
但是当我们想要动态检查对象的类时,主要区别就出现了。在这种情况下,isInstance()方法将起作用,而无法通过instanceof运算符来实现这一点。
获取class对象通过equals()比较
FatherClass father=new FatherClass();
if(father.getClass().equals(FatherClass.class)) {
System.out.println(“father是类FatherClass的对象”);
}else {
System.out.println(“father不是类FatherClass的对象”);
}