一、instanceof 关键字用法
instanceof 是 Java 的一个二元操作符,类似于 ==,>,< 等操作符。 instanceof 是 Java的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回 boolean 的数据类型。
以下实例创建了displayObjectClass() 方法来演示 Java instanceof 关键字用法:
/*
author by runoob.com
Main.java
*/
import java.util.ArrayList;
import java.util.Vector;
public class Main {
public static void main(String[] args) {
Object testObject = new ArrayList();
displayObjectClass(testObject);
}
public static void displayObjectClass(Object o) {
if (o instanceof Vector)
System.out.println("对象是 java.util.Vector 类的实例");
else if (o instanceof ArrayList)
System.out.println("对象是 java.util.ArrayList 类的实例");
else
System.out.println("对象是 " + o.getClass() + " 类的实例");
}
}
结果是:对象是 java.util.ArrayList 类的实例
二、比较两个对象的大小示例:通常java中比较两个对象的大小时会用到instanceof
class ComparableCircle extends Circle implements CompareObject{
public ComparableCircle(int radius) {
super(radius);
}
// Circle类声明属性,并提供方法
class Circle{
int radius;
public Circle() {
}
public Circle(int radius) {
this.radius = radius;
}
public int getRadius() {
return radius;
}
public void setRadius(int radius) {
this.radius = radius;
}
}
public int compareTo(Object o) {
// 写具体的比较,如果返回0,则代表相等;如果正数,则当前对象大;如果负数,则当前对象小
if (this == o)
return 0;
if (o instanceof ComparableCircle){
ComparableCircle c = (ComparableCircle)o;
if (this.getRadius() > c.getRadius())
return 1;
else if (this.getRadius() < c.getRadius())
return -1;
else
return 0;
}else {
return 0;
}
}
}