instanceof
是 Java 中的一个二元运算符,用于检查一个对象是否为特定类的实例或其子类的实例。
语法:
object instanceof Class
object
: 要检查的对象。Class
: 要检查的类或接口。.
返回值:
- 如果
object
是Class
的实例或其子类的实例,则返回true
。 - 否则,返回
false
。
用途:
- 类型检查: 在运行时检查对象的类型,以确定是否可以安全地执行特定操作。
- 多态性: 在多态场景中,使用
instanceof
运算符可以区分不同类型的对象,并执行相应的操作。 - 条件判断: 在条件语句中使用
instanceof
运算符,根据对象的类型执行不同的代码分支。
子类 instanceof 父类: 总是为真,因为子类是父类的特例,它继承了父类的所有属性和方法。
父类 instanceof 子类: 通常为假,因为父类本身不是子类的实例。
示例:
class Animal { }
class Dog extends Animal { }
public class Main {
public static void main(String[] args) {
Animal animal = new Dog(); // animal 实际存储的是 Dog 对象
if (animal instanceof Dog) {
System.out.println("animal 是 Dog 的实例"); // 输出:animal 是 Dog 的实例
} else {
System.out.println("animal 不是 Dog 的实例");
}
Animal animal2 = new Animal(); // animal2 实际存储的是 Animal 对象
if (animal2 instanceof Dog) {
System.out.println("animal2 是 Dog 的实例");
} else {
System.out.println("animal2 不是 Dog 的实例"); // 输出:animal2 不是 Dog 的实例
}
}
}
接口示例:
interface Flyable {
void fly();
}
class Bird implements Flyable {
@Override
public void fly() {
System.out.println("鸟儿在飞翔");
}
}
class Fish {
// 没有实现 Flyable 接口
}
public class Main {
public static void main(String[] args) {
Bird bird = new Bird();
Fish fish = new Fish();
// 检查 bird 是否实现了 Flyable 接口
if (bird instanceof Flyable) {
System.out.println("bird 实现了 Flyable 接口"); // 输出:bird 实现了 Flyable 接口
}
// 检查 fish 是否实现了 Flyable 接口
if (fish instanceof Flyable) {
System.out.println("fish 实现了 Flyable 接口"); // 不输出任何内容
}
}
}
instanceof
运算符可以用于检查对象是否实现了特定接口。- 如果一个对象实现了某个接口,结果为
true
。 - 如果一个对象没有实现某个接口,结果为
false
。