检查变量类型
下面是一个用 Java 检查变量类型的示例程序。
由于 Java 是一种静态类型语言,类型是显式声明的,因此没有机会在这种程度上检查类型。不过,在使用继承对象时,可能有必要进行类型检查。
如何检查 Java 中的类型 实例 使用运算符,您可以使用 if 语句等评估类和接口,如下所示。
多变的 类的实例
多变的 接口实例
实例 的右侧可以指定类名或接口名。实例 返回值是一个布尔值;如果为 true,则变量是指定的类或接口。
聊天&信使 是一款集商务聊天、网络会议、文件共享、日程管理、文档管理、会议室预订、考勤管理于一体的组件,简单易用。为企业提供完善的安全保护,免费提供!
示例程序
首先是最简单的模式。如果变量 i 是整数,则返回 true,否则返回 false。
示例代码
public static void integerSample() {
Integer i = 100;
boolean result = i instanceof Integer;
System.out.println(result);
}
输出(结果)
true
变量 i 是一个整数,因此结果为 true。不过,这太明显了,我们无法理解 instanceof 的作用,所以我们再把它复杂化一点。
有效使用实例
instanceof 的一个有效用法是确定变量是哪个子类。
示例代码
示例代码中,我们创建了一个动物类Animal、一个继承于Animal类的Dog类、以及一个Cat类,创建实例后,我们在play方法中设置了一个变量。 实例 控制台输出根据判断进行分支。
class Animal {}
class Dog extends Animal {}
class Cat extends Animal {}
public class Main {
public static void main(String[] args) {
instanceofSample();
}
static void instanceofSample() {
Animal dog = new Dog();
play(dog);
Animal cat = new Cat();
play(cat);
}
static void play(Animal animal) {
if (animal instanceof Dog) {
System.out.println("お散歩する");
} else {
System.out.println("猫じゃらしで遊ぶ");
}
}
}
输出(结果)
お散歩する
猫じゃらしで遊ぶ
关键在于,在游戏方法中,作为参数传递的动物是狗还是猫并不可知。
实例 现在,您还可以检查超类(动物)中包含的子类实例(狗或猫),因此您可以像这样使用它。
检查特定接口是否已被实现
您可以检查instanceof所针对的变量是否实现了特定接口。例如,您可以这样使用它。
示例代码
在下面的示例代码中,我们为 Sato 先生和 Suzuki 先生创建类,并实现 Car 接口,假设只有 Suzuki 先生拥有汽车。 goShopping() 方法假设去购物的过程,但它实现了 Car 或基于 instanceof 分支控制台输出。
interface Car {}
class Sato {}
class Suzuki implements Car {}
public class Main {
public static void main(String[] args) throws Exception {
instanceofSample();
}
static void instanceofSample() {
Sato sato = new Sato();
goShopping(sato);
Suzuki suzuki = new Suzuki();
goShopping(suzuki);
}
static void goShopping(Object human) {
if (human instanceof Car) {
System.out.println("車で行く");
} else {
System.out.println("歩いて行く");
}
}
}
输出结果:
歩いて行く
車で行く
可以看出,在实施 Car 和不实施 Car 的情况下,流程是不同的。